Kapselung in Java - Wie beherrsche ich OOPs mit Kapselung?



Dieser Artikel über die Kapselung in Java hilft Ihnen dabei, die Kernkonzepte zum Ausblenden von Implementierungsdetails sowie verschiedene einfache Beispiele zu verstehen.

Objektorientierte Programmierung oder besser bekannt als OOPs ist eine der wichtigsten Säulen von Java, die ihre Leistungsfähigkeit und Benutzerfreundlichkeit genutzt hat. Um ein professioneller Java-Entwickler zu werden, müssen Sie eine einwandfreie Kontrolle über die verschiedenen haben mögen , Abstraktion , Verkapselung und Polymorphismus. Durch das Medium dieses Artikels werde ich Ihnen einen vollständigen Einblick in eines der wichtigsten Konzepte von OOPs geben, d. H. Die Kapselung in Java und wie es erreicht wird.

Im Folgenden sind die Themen aufgeführt, die ich in diesem Artikel diskutieren werde:





Sie können diese Aufnahme auch durchgehen Hier können Sie die Themen anhand von Beispielen detailliert verstehen.



Einführung in die Kapselung

Kapselung bezieht sich auf das Zusammenfassen von Daten unter einer einzigen Einheit. Es ist der Mechanismus, der den Code und die von ihm manipulierten Daten bindet. Eine andere Möglichkeit, über die Kapselung nachzudenken, besteht darin, dass es sich um einen Schutzschild handelt, der verhindert, dass der Code außerhalb dieses Schutzschilds auf die Daten zugreift. Dabei sind die Variablen oder Daten von a ist vor jeder anderen Klasse verborgen und kann nur über eine Mitgliedsfunktion der eigenen Klasse aufgerufen werden, in der sie deklariert sind.

Nehmen wir nun das Beispiel einer medizinischen Kapsel, bei der das Medikament in der Kapsel immer sicher ist. In ähnlicher Weise sind durch die Kapselung die Methoden und Variablen einer Klasse gut versteckt und sicher.



Kapselung - Kapselung in Java-EdurekaDie Kapselung in Java kann erreicht werden durch:

  • Deklarieren der Variablen einer Klasse als privat.
  • Bereitstellung von öffentlichen Setter- und Getter-Methoden zum Ändern und Anzeigen der Variablenwerte.

Schauen wir uns nun den Code an, um ein besseres Verständnis der Kapselung zu erhalten:

public class Student {privater Stringname public String getName () {Rückgabewert} public void setName (Stringname) {this.name = name}} Klassentest {public static void main (String [] args) {Student s = neuer Student () s.setName ('Harry Potter') System.out.println (s.getName ())}}

Wie Sie im obigen Code sehen können, habe ich eine Klasse Student erstellt, die eine private hat Name . Als nächstes habe ich einen Getter und Setter erstellt, um den Namen eines Schülers zu erhalten und festzulegen. Mit Hilfe dieser Methoden muss jede Klasse, die auf die Namensvariable zugreifen möchte, diese Getter- und Setter-Methoden verwenden.

Sehen wir uns nun ein weiteres Beispiel an und verstehen die Kapselung im Detail. In diesem Beispiel verfügt die Car-Klasse über zwei Felder: name und topSpeed. Hier werden beide als privat deklariert, was bedeutet, dass auf sie nicht direkt außerhalb der Klasse zugegriffen werden kann. Wir haben einige Getter- und Setter-Methoden wie getName, setName, setTopSpeed ​​usw., die als öffentlich deklariert sind. Diese Methoden sind „Außenstehenden“ ausgesetzt und können zum Ändern und Abrufen von Daten aus dem Autoobjekt verwendet werden. Wir haben eine Methode, um die Höchstgeschwindigkeit des Fahrzeugs einzustellen, und zwei Getter-Methoden, um den Höchstgeschwindigkeitswert entweder in MPH oder KMHt abzurufen. Im Grunde ist dies das, was die Kapselung tut - sie verbirgt die Implementierung und gibt uns die Werte, die wir wollen. Schauen wir uns nun den folgenden Code an.

Paket Edureka öffentliche Klasse Auto {privater Stringname privater doppelter topSpeed ​​öffentlicher Wagen () {} öffentlicher String getName () {Rückgabenname} öffentlicher void setName (Stringname) {this.name = name} öffentlicher void setTopSpeed ​​(doppelte speedMPH) {topSpeed = speedMPH} public double getTopSpeedMPH () {return topSpeed} public double getTopSpeedKMH () {return topSpeed ​​* 1.609344}}

Hier erstellt das Hauptprogramm ein Car-Objekt mit einem bestimmten Namen und verwendet die Setter-Methode, um die Höchstgeschwindigkeit für diese Instanz zu speichern. Auf diese Weise können wir die Geschwindigkeit in MPH oder KMH leicht ermitteln, ohne uns darum zu kümmern, wie die Geschwindigkeit in der Fahrzeugklasse umgerechnet wird.

Paket Edureka public class Beispiel {public static void main (String args []) Auto car = new Car () car.setName ('Mustang GT 4,8-Liter-V8') car.setTopSpeed ​​(201) System.out.println (Auto. getName () + 'Höchstgeschwindigkeit in MPH ist' + car.getTopSpeedMPH ()) System.out.println (car.getName () + 'Höchstgeschwindigkeit in KMH ist' + car.getTopSpeedKMH ())

S.o Auf diese Weise kann die Kapselung in Java erreicht werden. Lassen Sie uns nun weiter gehen und sehen, warum wir die Kapselung benötigen.

Warum brauchen wir die Kapselung in Java?

Die Kapselung ist in Java wichtig, weil:

  • Es steuert die Art der Datenzugriff
  • Ändert den Code basierend auf den Anforderungen
  • Hilft uns, ein lockeres Paar zu erreichen
  • Erreicht die Einfachheit unserer Anwendung
  • Sie können damit auch den Teil des Codes ändern, ohne andere im Programm vorhandene Funktionen oder Codes zu stören

Betrachten wir nun ein kleines Beispiel, das die Notwendigkeit der Kapselung veranschaulicht.

Klasse Student {int id String name} öffentliche Klasse Demo {public static void main (String [] args) {Student s = new Student () s.id = 0 s.name = '' s.name = null}}

Im obigen Beispiel enthält es zwei Instanzvariablen als Zugriffsmodifikator. So kann jede Klasse innerhalb desselben Pakets Werte dieser Variablen zuweisen und ändern, indem sie ein Objekt dieser Klasse erstellt. Daher haben wir keine Kontrolle über die Werte, die in der Student-Klasse als Variablen gespeichert sind. Um dieses Problem zu lösen, kapseln wir die Student-Klasse.

Dies waren also die wenigen Hinweise, die die Notwendigkeit der Kapselung darstellen. Lassen Sie uns nun einige Vorteile der Kapselung sehen.

flache Kopie und tiefe Kopie in Java

Vorteile der Kapselung

    • Verstecken von Daten: Hier hat ein Benutzer keine Ahnung von der inneren Implementierung der Klasse. Selbst dem Benutzer ist nicht bekannt, wie die Klasse Werte in den Variablen speichert. Er / sie wird nur wissen, dass wir die Werte an eine Setter-Methode übergeben und Variablen mit diesem Wert initialisiert werden.
    • Erhöhte Flexibilität: Hier können wir die Variablen der Klasse je nach Anforderung als schreibgeschützt oder schreibgeschützt festlegen. Wenn Sie die Variablen schreibgeschützt machen möchten, müssen Sie die Setter-Methoden wie setName () weglassen.setAge() usw. oder wenn wir die Variablen als schreibgeschützt festlegen möchten, müssen wir die get-Methoden wie getName (), getAge () usw. aus dem obigen Programm weglassen.
    • Wiederverwendbarkeit: Es verbessert auch die Wiederverwendbarkeit und lässt sich leicht an neue Anforderungen anpassen.

Nachdem wir die Grundlagen der Kapselung verstanden haben, wollen wir uns mit dem letzten Thema dieses Artikels befassen und die Kapselung anhand eines Echtzeitbeispiels im Detail verstehen.

Ein Echtzeitbeispiel für die Kapselung

Betrachten wir ein Fernsehbeispiel und verstehen, wie interne Implementierungsdetails vor der externen Klasse verborgen sind.Grundsätzlich verstecken wir in diesem Beispiel innere Codedaten, d. H. Schaltkreise von der Außenwelt, durch die Abdeckung. Jetzt in Dies kann mit Hilfe von Zugriffsmodifikatoren erreicht werden. Zugriffsmodifikatoren legen den Zugriff oder die Ebene einer Klasse, Konstruktorvariablen usw. fest. Wie Sie im folgenden Code sehen können, habe ich den privaten Zugriffsmodifikator verwendet, um die Zugriffsebene der Klasse einzuschränken. Als privat deklarierte Variablen sind nur innerhalb der Fernsehklasse zugänglich.

public class Television {private doppelte Breite private doppelte Höhe private doppelte Bildschirmgröße private int maxVolume print int Volumen private boolesche Leistung public Television (doppelte Breite, doppelte Höhe, doppelte Bildschirmgröße) {this.width this.height this.screenSize = ScreenSize} public double channelTuning (int channel) {switch (channel) {case1: return 34.56 case2: return 54.89 case3: return 73.89 case1: return 94.98} return 0} public int AbnahmeVolume () {if (0volume) volume ++ return volume}} Klassentest {public static void main (String args []) {Fernsehen t = neues Fernsehen (11.5,7,9) t.powerSwitch () t.channelTuning (2) t.decreaseVolume () t.increaseVolume () Fernsehen. // Fehler auslösen, da die Variable privat ist und außerhalb der Klasse nicht zugegriffen werden kann}}

Im obigen Beispiel habe ich alle Variablen als privat und Methoden, Konstruktoren und Klassen als öffentlich deklariert. Hier kann auf Konstruktoren und Methoden außerhalb der Klasse zugegriffen werden. Wenn ich erschaffeein Objektder Television-Klasse kann auf die in der Klasse vorhandenen Methoden und Konstruktoren zugreifen, während Variablen, die mit dem Modifikator für den privaten Zugriff deklariert wurden, ausgeblendet sind. Das ist der Grund, warum Sie versuchen, darauf zuzugreifen Breite variabel im obigen Beispiel wirft esein Fehler. Auf diese Weise werden interne Implementierungsdetails vor den anderen Klassen verborgen. So wird die Kapselung in Java erreicht.

Dies bringt uns zum Ende dieses Artikels über „Kapselung in Java“. Ich hoffe, Sie fanden es informativ und es hat dazu beigetragen, Ihr Wissen aufzuwerten. Wenn Sie mehr über Java erfahren möchten, lesen Sie die

Nachdem Sie verstanden haben, was Encapsulation in Java ist, lesen Sie die von Edureka, einem vertrauenswürdigen Online-Lernunternehmen mit einem Netzwerk von mehr als 250.000 zufriedenen Lernenden auf der ganzen Welt. Der Java J2EE- und SOA-Schulungs- und Zertifizierungskurs von Edureka richtet sich an Studenten und Fachleute, die Java-Entwickler werden möchten. Der Kurs soll Ihnen einen Vorsprung in die Java-Programmierung verschaffen und Sie sowohl für grundlegende als auch für fortgeschrittene Java-Konzepte sowie für verschiedene Java-Frameworks wie Hibernate & Spring schulen.

Hast du eine Frage an uns? Bitte erwähnen Sie dies im Kommentarbereich dieses Blogs „Encapsulation in Java“. Wir werden uns so schnell wie möglich bei Ihnen melden.