Beim Umschreiben handelt es sich um einen Prozess, bei dem eine Unterklasse die Implementierung einer Methode neu schreibt, die den Zugriff auf die übergeordnete Klasse ermöglicht. Weder der Rückgabewert noch die formalen Parameter können geändert werden. Das heißt, die Shell bleibt unverändert und der Kern wird neu geschrieben!
Der Vorteil des Überschreibens besteht darin, dass Unterklassen ihr eigenes Verhalten nach Bedarf definieren können. Mit anderen Worten: Unterklassen können die Methoden der übergeordneten Klasse nach Bedarf implementieren.
Überschreibende Methoden können keine neuen geprüften Ausnahmen oder Ausnahmen auslösen, die umfassender sind als die von der überschriebenen Methode deklarierten. Beispiel:
Klasse Tier{
public void move(){
System.out.println("Tiere können sich bewegen");
} }
Klasse Hund erweitert Tier{
public void move(){
System.out.println("Hunde können laufen und laufen");
} }
Dann zitieren wir:
Animal a = new Animal(); // Tierobjekt
Animal b = new Dog(); // Hundeobjekt
a.move();//Führen Sie die Methode der Tierklasse aus
b.move();//Führen Sie die Methode der Dog-Klasse aus
Die Ausgabe ist:
动物可以移动 狗可以跑和走
Wie Sie im obigen Beispiel sehen können, führt b, obwohl es zum Typ Animal gehört, die Move-Methode der Dog-Klasse aus (die Methode, die wir überschrieben haben)
Dies liegt daran, dass während der Kompilierungsphase nur der Referenztyp des Parameters überprüft wird.
Zur Laufzeit gibt die Java Virtual Machine (JVM) jedoch den Objekttyp an und führt die Methoden des Objekts aus.
Daher ist die Kompilierung im obigen Beispiel erfolgreich, da die Move-Methode in der Animal-Klasse vorhanden ist. Zur Laufzeit wird jedoch die Methode des spezifischen Objekts ausgeführt.
1. Die Parameterliste muss genau mit der der überschriebenen Methode übereinstimmen.
2. Der Rückgabetyp kann sich vom Rückgabetyp der überschriebenen Methode unterscheiden, es muss sich jedoch um eine vom Rückgabewert der übergeordneten Klasse abgeleitete Klasse handeln.
3. Die Zugriffsberechtigung darf nicht niedriger sein als die Zugriffsberechtigung der überschriebenen Methode in der übergeordneten Klasse.
4. Die Mitgliedsmethoden der übergeordneten Klasse können nur von ihren Unterklassen überschrieben werden. Wenn eine Unterklasse im selben Paket alle Methoden der übergeordneten Klasse überschreiben kann, mit Ausnahme der als privat und final deklarierten Methoden.
5. Als final deklarierte Methoden können nicht überschrieben werden, während als statisch deklarierte Methoden nicht überschrieben, aber erneut deklariert werden können.
6. Wenn sich die Unterklasse und die übergeordnete Klasse nicht im selben Paket befinden, kann die Unterklasse nur die nicht endgültigen Methoden der übergeordneten Klasse überschreiben, die als öffentlich und geschützt deklariert sind.
7. Die überschriebene Methode kann jede nicht obligatorische Ausnahme auslösen, unabhängig davon, ob die überschriebene Methode eine Ausnahme auslöst. Eine überschriebene Methode kann jedoch keine neuen obligatorischen Ausnahmen oder obligatorische Ausnahmen auslösen, die umfassender sind als die von der überschriebenen Methode deklarierten, und umgekehrt.
Es hat die gleiche Bedeutung wie C++.
Beim Überladen handelt es sich um eine Methode mit demselben Namen, aber unterschiedlichen Parametern in einer Klasse. Die Rückgabetypen können gleich oder unterschiedlich sein.
Jede überladene Methode (oder jeder überladene Konstruktor) muss über eine eindeutige Liste von Parametertypen verfügen.
Der am häufigsten verwendete Ort ist die Überladung des Konstruktors.
Der Unterschied zum Überschreiben besteht darin, dass sich das Überladen auf andere Parameter konzentriert.
Polymorphismus ist die Fähigkeit desselben Verhaltens, mehrere unterschiedliche Erscheinungsformen oder Formen anzunehmen. Polymorphismus ist die gleiche Schnittstelle, die unterschiedliche Instanzen verwendet, um unterschiedliche Vorgänge auszuführen.
Das Erlernen des Konzepts des Polymorphismus ist für die gute Anwendung von Schnittstellen sehr wichtig.
Drei notwendige Bedingungen für die Existenz von Polymorphismus:
1.
erben 2.
umschreiben 3. Die Referenz der übergeordneten Klasse verweist auf das Unterklassenobjekt
In diesem Beispiel zeigt beispielsweise eine Referenz einer übergeordneten Klasse auf ein Objekt einer Unterklasse:
Parent p = new Child();
Hinweis: Wenn Sie eine Methode mithilfe von Polymorphismus aufrufen, prüfen Sie zunächst, ob die Methode in der übergeordneten Klasse vorhanden ist. Wenn dies nicht der Fall ist, rufen Sie die gleichnamige Methode in der Unterklasse auf.
Virtuelle Funktionen sind eine der Grundlagen des Polymorphismus. Natürlich sind alle Funktionen in JAVA standardmäßig virtuelle Funktionen im Sinne von C++, daher müssen Sie nicht besonders darauf achten, da dynamische Bindung das Standardverhalten von Java ist.
Wenn Sie nicht möchten, dass eine Funktion in Java virtuelle Funktionsmerkmale aufweist, können Sie das Schlüsselwort final hinzufügen, um sie zu einer nicht virtuellen Funktion zu machen.
Das obige ist der detaillierte Inhalt vonSo definieren und verwenden Sie Java-Rewriting, -Überladung und -Polymorphismus. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!