Ecco il codice, ho definito due classe denominata Padre e del Figlio, e li creo nella funzione principale:Qual è l'ordine dei costruttori in questo codice Java?
public class Test {
public static void main(String[] args) {
Father father = new Son();
}
}
class Father {
private String name = "father";
public Father() {
who();
tell(name);
}
public void who() {
System.out.println("this is father");
}
public void tell(String name) {
System.out.println("this is " + name);
}
}
class Son extends Father {
private String name = "son";
public Son() {
who();
tell(name);
}
public void who() {
System.out.println("this is son");
}
public void tell(String name) {
System.out.println("this is " + name);
}
}
e ho avuto l'output come questo:
this is son
this is father
this is son
this is son
ma non ci riesco capire come è successo? Qualcuno può dirmi perché?
Lezione impara: non chiamare metodi da costruttori che possono essere sovrascritti. – Thilo
un'altra lezione da imparare è che dovresti sempre provare a creare messaggi di "debug" che non possono essere interpretati erroneamente: cambierei i tuoi metodi in qualcosa come "System.out.println (" Son.who() "); ',' System.out.println ("Son.tell (" + name + ")"); ',' System.out.println ("Father.who()"); 'e' System.out. println ("Padre.tella (" + nome + ")"); ' –