1. Der Prozess der dynamischen Bindung:
Beispiel:
public class Son extends Father Son son = new Son();3 son.method();
1. Zuerst durchsucht der Compiler die „Methodentabelle“ der entsprechenden Klasse (Son) und ihrer übergeordneten Klasse (Vater) basierend auf dem deklarierten Typ und Methodenname des Objekts. Finden Sie alle Methodenmethoden, deren Zugriffsattribute öffentlich sind.
Es kann mehrere Methoden mit dem Namen „Methode“ mit unterschiedlichen Parametertypen oder -nummern geben.
2. Finden Sie dann die exakt passende Methode basierend auf der „Signatur“ der Methode.
Der Name und die Parameterliste einer Methode werden als Signatur der Methode bezeichnet.
In Versionen vor Java SE 5.0 muss beim Überschreiben einer übergeordneten Klassenmethode der Rückgabetyp derselbe sein. Wenn eine Unterklasse eine Methode einer Oberklasse überschreibt, kann ihr Rückgabetyp jetzt als Untertyp des ursprünglichen Typs definiert werden.
public Father getFather(){...} //父类中的方法 public Son getFather(){...} //子类覆盖父类中的getFather()方法
3. Wenn es sich um eine private, statische, finale Methode oder einen Konstruktor handelt, weiß der Compiler genau, welche Methode er aufrufen muss, und diese aufrufende Methode wird „statischer Aufruf“ genannt.
4. Aufrufmethode.
Wenn die Methode method() in der Unterklasse Son definiert ist, wird die entsprechende Methode in der Unterklasse Son direkt aufgerufen. Wenn die entsprechende Methode nicht in der Unterklasse Son definiert ist, wird die Methode method() in ihrer übergeordneten Klasse gefunden .
2. Demo
1. Die Unterklasse überschreibt die Methode in der übergeordneten Klasse und ruft die Methode in der übergeordneten Klasse auf.
public class Father{ public void method(){ System.out.println("父类方法:"+this.getClass()); } } public class Son extends Father{ public void method(){ System.out.println("子类方法"+this.getClass()); } public static void main(String[] args){ Father instance = new Son(); instance.method(); } } //结果:子类方法:class Son
2. Die Unterklasse überschreibt die Methode in der übergeordneten Klasse in der übergeordneten Klasse Die Methode
public class Father{ public void method(){ System.out.println("父类方法:"+this.getClass()); } } public class Son extends Father{ public static void main(String[] args){ Father instance = new Son(); instance.method(); } } //结果:父类方法:class Son
3. Die dynamische Bindung ist nur eine Methode für Objekte und ist für Attribute ungültig. Weil Eigenschaften nicht überschrieben werden können.
public class Father{ public String name = "父亲属性"; } public class Son extends Father{ public String name = "孩子属性"; public static void main(String[] args){ Father instance = new Son(); System.out.println(instance.name); } } //结果:父亲属性
Das obige ist der detaillierte Inhalt vonSo implementieren Sie den dynamischen Java-Bindungsmechanismus. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!