Überladung: mehrere Funktionen mit demselben Namen, aber demselben Methodennamen, aber unterschiedlichen Parametern
Hinweis: 1. Unterschiedliche Parameter bedeuten, dass es mindestens einen Unterschied im Parametertyp, in der Anzahl der Parameter und in der Reihenfolge der Parameter gibt.
2. Rückgabewerte, Ausnahmen und Zugriffsmodifikatoren können nicht als Bedingungen für Überladung verwendet werden (da bei anonymen Aufrufen Mehrdeutigkeiten auftreten, z. B.: void a () und int a(), wenn a() aufgerufen wird, treten Mehrdeutigkeiten auf).
3. Die Hauptmethode kann auch überladen sein
Überschreiben: Die Unterklasse schreibt die Methode der übergeordneten Klasse neu und erfordert, dass der Methodenname und der Parametertyp genau gleich sind (die Parameter können keine Unterklassen sein), der Rückgabewert und die Ausnahme kleiner oder gleich denen der übergeordneten Klasse sind (das Das heißt, sie sind Unterklassen der übergeordneten Klasse und die Zugriffsmodifikatoren sind kleiner als die der übergeordneten Klasse. Die übergeordnete Klasse ist größer oder gleich
Zwei gleiche, zwei kleine und ein großes
Hinweis: Statische Methoden der Unterklasse können keine statischen Methoden der übergeordneten Klasse überschreiben (bei der Kompilierung tritt ein Fehler auf).
Versteckt: Wenn die übergeordnete Klasse und die untergeordnete Klasse Attribute oder Methoden mit demselben Namen haben, fehlt das Attribut oder die Methode der übergeordneten Klasse mit demselben Namen in der Form, ist aber tatsächlich noch vorhanden.
Hinweis: Beim Ausblenden werden unabhängig vom Deklarationstyp der Klasse die Eigenschaften oder Methoden der entsprechenden Klasse aufgerufen und es findet keine dynamische Bindung statt.
Es gibt nur eine Form des Methodenversteckens, das heißt, dass in der übergeordneten Klasse und der untergeordneten Klasse dieselbe statische Methode vorhanden ist
Eigenschaften können nur ausgeblendet, nicht überschrieben werden
Unterklassen-Instanzvariablen/statische Variablen können die Instanz-/statischen Variablen der übergeordneten Klasse ausblenden. Zusammenfassend lässt sich sagen, dass Variablen übergreifend ausgeblendet werden können.
Der Unterschied zwischen Verstecken und Verdecken:
Versteckte Attribute: Nachdem die Unterklasse in die übergeordnete Klasse gezwungen wurde, wird auf die Attribute in der übergeordneten Klasse zugegriffen.
Die überschriebene Methode ruft nach der erzwungenen Konvertierung der Unterklasse in die übergeordnete Klasse weiterhin die Methode der Unterklasse selbst auf.
Da die Abdeckung dynamisch gebunden ist und RTTI (Laufzeittypidentifikation, Laufzeittypinspektion) unterliegt, unterliegt das Ausblenden nicht RTTI. Zusammenfassend dient RTTI nur der Abdeckung, nicht dem Ausblenden.
Besondere Umstände:
1. Die durch final geänderten Eigenschaften können ausgeblendet, aber nicht zugewiesen werden, das heißt, sie können nicht mit = zugewiesen werden. Diese Aussage ist nicht korrekt, da nach einer Referenztypvariable Wird mit „final“ geändert, kann es nicht auf andere Objekte verweisen, kann aber seinen eigenen Wert ändern. Das „final“-Attribut kann zur Laufzeit initialisiert werden, die Initialisierungsanweisung muss jedoch angezeigt werden.
2. Endgültig geänderte Methoden können nicht überschrieben und überlastet werden
3. Endgültig geänderte Klassen können nicht vererbt werden
4. Die private Methode fügt implizit final hinzu