Heim  >  Artikel  >  Java  >  Die drei Hauptmerkmale von Java verstehen: Kapselung, Vererbung und Polymorphismus

Die drei Hauptmerkmale von Java verstehen: Kapselung, Vererbung und Polymorphismus

高洛峰
高洛峰Original
2017-01-19 14:08:491788Durchsuche

Lassen Sie uns zunächst kurz über die Definitionen seiner drei Hauptmerkmale sprechen:

Kapselung: Die Eigenschaften und Implementierungsdetails des Objekts verbergen, nur die Schnittstelle der Außenwelt zugänglich machen und Steuern des Lesens und Änderns von Eigenschaften im Programm. Kombinieren der abstrahierten Daten und Verhaltensweisen (oder Funktionen) zu einem organischen Ganzen, d. h. organisches Kombinieren der Daten mit dem Quellcode, der die Daten verarbeitet, um eine „Klasse“ zu bilden, in der sowohl Daten als auch Funktionen Mitglieder der Klasse sind. Der Zweck der Kapselung besteht darin, die Sicherheit zu erhöhen und die Programmierung zu vereinfachen. Benutzer müssen die spezifischen Implementierungsdetails nicht verstehen, sondern müssen nur die Mitglieder der Klasse über die externe Schnittstelle und eine bestimmte Zugriffsberechtigung verwenden. Die Grundvoraussetzungen für die Kapselung sind: Alle Eigenschaften privatisieren und für jede Eigenschaft Getter- und Setter-Methoden bereitstellen. Wenn es einen Konstruktor mit Parametern gibt, müssen Sie einen Konstruktor ohne Parameter schreiben. Während der Entwicklung ist es häufig erforderlich, die geschriebenen Klassen zu testen. Daher wird manchmal die toString-Methode überschrieben, dies ist jedoch nicht erforderlich.

Vererbung: Die Wiederverwendung von Code wird durch Vererbung erreicht. Alle Klassen in Java werden durch direktes oder indirektes Erben der Klasse java.lang.Object erhalten. Die geerbte Klasse wird als Unterklasse bezeichnet, und die geerbte Klasse wird als übergeordnete Klasse bezeichnet. Unterklassen können keine Mitgliedsvariablen und Methoden mit privaten Zugriffsrechten in der übergeordneten Klasse erben. Unterklassen können Methoden der übergeordneten Klasse überschreiben und Mitgliedsvariablen mit demselben Namen wie die übergeordnete Klasse benennen. Aber Java unterstützt keine Mehrfachvererbung, also die Fähigkeit einer Klasse, von mehreren Superklassen abzuleiten. Versuchen Sie, die Vererbungsbeziehungen während der Entwicklung so weit wie möglich zu reduzieren, um die Kopplung des Programms zu verringern.

Polymorphismus: Polymorphismus wird in Entwurfszeitpolymorphismus und Laufzeitpolymorphismus unterteilt. Beispielsweise wird Überladung auch als Entwurfszeitpolymorphismus bezeichnet, und für überschriebene oder geerbte Methoden wird die JAVA-Laufzeit bestimmt Welche Methode aufgerufen werden soll, basiert auf dem Typ der Instanz, auf der die Methode aufgerufen wird. Dies wird als Laufzeitpolymorphismus bezeichnet. Alles in allem sind Vererbung, Kapselung und Polymorphismus die typischen Merkmale des objektorientierten Designs. Diese Merkmale sind auch der Schlüssel dafür, warum objektorientiertes Design so beliebt ist.

Kapselung

Der Standardwert der Zugriffsberechtigungen für Klassenattribute in Java ist nicht privat. Wenn Sie die Methode dieses Attributs ausblenden möchten, können Sie den privaten Modifikator hinzufügen, um ihn nur darauf zu beschränken innerhalb der Klasse Zugriff.

Für private Attribute in der Klasse sollte ein Methodenpaar (getXXX, setXXX()) bereitgestellt werden, um auf die privaten Attribute zuzugreifen, um den Betrieb und die Sicherheit der privaten Attribute sicherzustellen.

Kapselung von Methoden, öffentlich machen, was öffentlich gemacht werden soll, und verbergen, was verborgen bleiben soll.

Java-Vererbung

Vererbung besteht darin, mehrere Arten von Dingen mit gemeinsamen Merkmalen in einer Klasse zu abstrahieren.

Die Vererbung in Java muss das Schlüsselwort „extends“ verwenden, und Java erlaubt eine einzelne Vererbung, das heißt, eine Klasse kann nur eine übergeordnete Klasse haben.

Konstruktormethoden können nicht vererbt werden.

Überschreiben in Java-Methoden

Wenn eine Unterklasse eine Methode mit demselben Namen und derselben Parameterliste hat, auf die in der übergeordneten Klasse zugegriffen werden kann, wird die von der übergeordneten Klasse geerbte Methode überschrieben.

super() Schlüsselwort

super(), was bedeutet, dass super() nur im Konstruktor verwendet werden kann, wenn der Konstruktor der Unterklasse den Konstruktor der übergeordneten Klasse aufruft . Erster Satz.

Polymorphismus in Java

Es gibt zwei polymorphe Mechanismen: Polymorphismus zur Kompilierungszeit und Laufzeitpolymorphismus

1. Überladung bedeutet, dass es mehrere gibt Methoden mit demselben Namen in derselben Klasse, aber diese Methoden haben unterschiedliche Parameter. , damit Sie bestimmen können, welche Methode zur Kompilierungszeit aufgerufen werden soll. Es handelt sich um eine Art Polymorphismus zur Kompilierungszeit.

2. Methodenabdeckung: Unterklassen können die Methoden der übergeordneten Klasse überschreiben, sodass dieselbe Methode in der übergeordneten Klasse und in der Unterklasse unterschiedliche Ausdrücke hat. In der Java-Sprache kann eine Referenzvariable einer Basisklasse nicht nur auf ein Instanzobjekt der Basisklasse, sondern auch auf ein Instanzobjekt einer Unterklasse verweisen. Ebenso kann eine Referenzvariable in einer Schnittstelle auch auf ein Instanzobjekt verweisen seiner Implementierungsklasse.

public class A {
public String show(D obj) {
return ("A and D");
}
public String show(A obj) {
return ("A and A");
} 
}
public class B extends A{
public String show(B obj){
return ("B and B");
}
public String show(A obj){
return ("B and A");
} 
}
public class C extends B{
}
public class D extends B{
}
public class Test {
public static void main(String[] args) {
A a1 = new A();
A a2 = new B();
B b = new B();
C c = new C();
D d = new D(); 
System.out.println("1--" + a1.show(b));
System.out.println("2--" + a1.show(c));
System.out.println("3--" + a1.show(d));
System.out.println("4--" + a2.show(b));
System.out.println("5--" + a2.show(c));
System.out.println("6--" + a2.show(d));
System.out.println("7--" + b.show(b));
System.out.println("8--" + b.show(c));
System.out.println("9--" + b.show(d)); 
}
}
1--A and A
2--A and A
3--A and D
4--B and A
5--B and A
6--A and D
7--B and B
8--B and B
9--A and D

Wenn eine Referenzvariable eines Oberklassenobjekts auf ein Unterklassenobjekt verweist, bestimmt der Typ des referenzierten Objekts und nicht der Typ der Referenzvariable, wessen Mitgliedsmethode aufgerufen wird, aber die aufgerufene Methode muss in der sein Oberklasse Methoden, die in der Klasse definiert wurden, also Methoden, die von Unterklassen überschrieben werden.

Veranschaulichen wir die Bedeutung dieses Satzes anhand eines Beispiels: a2.show(b);

Hier ist a2 eine Referenzvariable vom Typ A, auf die es sich bezieht ist ein B-Objekt. Gemäß dem obigen Satz bedeutet dies, dass B entscheidet, wessen Methode aufgerufen werden soll. Daher sollte a2.show (b) show (B obj) in B aufrufen und das Ergebnis sollte „B und B“ sein. aber warum unterscheidet es sich von den vorherigen Laufergebnissen? Hier ignorieren wir den folgenden Satz „Aber die hier aufgerufene Methode muss in der Superklasse definiert werden“. Existiert show(B obj) dann in Klasse A? Es existiert nicht! Also trifft dieser Satz hier nicht zu? Ist dieser Satz also falsch? NEIN! Tatsächlich impliziert dieser Satz auch diesen Satz: Er muss noch entsprechend der Priorität der aufrufenden Methode in der Vererbungskette bestätigt werden. Aus diesem Grund wird show(A obj) in Klasse A gefunden. Da B diese Methode neu geschrieben hat, ruft es gleichzeitig die Methode in Klasse B auf. Andernfalls ruft es die Methode in Klasse A auf.

Das Obige ist das Verständnis der drei Hauptmerkmale der Java-Kapselung, Vererbung und Polymorphismus. Ich hoffe, es wird Ihnen hilfreich sein. Wenn Sie Fragen haben, hinterlassen Sie mir bitte eine Nachricht Der Herausgeber wird allen umgehend antworten. Ich möchte mich auch bei Ihnen allen für Ihre Unterstützung der chinesischen PHP-Website bedanken!

Weitere Artikel zum Verständnis der drei Hauptmerkmale der Java-Kapselung, -Vererbung und -Polymorphie finden Sie auf der chinesischen PHP-Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn