Bestimmen Sie die Ausgabe:Java-Vererbung und späte Bindung, warum hat int id den Elternklassenwert und nicht die Kindklasse?
public class Test1{
public static void main(String args[]){
ChildClass c = new ChildClass();
c.print();
}
}
class ParentClass{
int id = 1;
void print(){
System.out.println(id);
}
}
class ChildClass extends ParentClass{
int id = 2;
}
Ich weiß, dass die Antwort 1 ist, und ich vermute, dass es da ist, da die Druckfunktion im ChildClass
nicht außer Kraft gesetzt wird, ist es die gleiche Definition hat, wie es hat in die ParentClass
. Warum wird die ID nicht in der untergeordneten Klasse angegeben, da Java die späte Bindung verwendet?
Das macht Sinn, danke! – drossy11
@ drossy11 du bist willkommen. Sehen Sie sich auch andere Antworten an (eher theoretisch, aber überlegenswert): Die Felder sind * versteckt *, Methoden sind * überschrieben *. – Mena
Schnelle Frage, wenn eine hallo() -Funktion in der parentClass definiert wurde, die in childClass() überschrieben wurde, und es gab einen Aufruf für die hallo() -Funktion im Konstruktor der Klasse parentClass() würde sie die hallo() verwenden Klasse in der ChildClass() definiert, weil es dynamische Dispatch für Methoden gibt, oder? – drossy11