qui sta lavorando il codice JavaIl metodo sovrascritto del genitore può chiamare java in altri oggetti ma non in un sottotipo?
class Cup {
public String sayColor() {
return "i have a color .";
}
}
class TCup extends Cup{
public String sayColor(){
System.out.println(super.getClass().getName());
return super.sayColor()+"color is tee green.";
}
}
class MyTCup extends TCup {
public String sayColor(){
System.out.println(super.getClass().getName());
return super.sayColor()+"but brushed to red now!";
}
}
class Test {
public static void main(String[] args) {
Cup c = new MyTCup();
System.out.print(c.sayColor());
}
}
e in esecuzione le stampe classe di test
MyTCup
MyTCup
i have a color .color is tee green.but brushed to red now!
domanda 1: Alla fase di esecuzione, l'oggetto di tipo di C è MyTCup, ma sempre possibile chiamare il metodo eccellente . C'è uno stack di metodi nella memoria in MyTCup dopo l'inizializzazione dell'oggetto, e quindi può richiamare in fase di runtime come il codice?
domanda 2: domanda: Non c'è modo di chiamare il metodo super in altri oggetti. Come so, C++ può eseguire il cast per chiamare il metodo genitore in qualsiasi momento. Perché il design java come questo?
Probabilmente dovresti accettare la risposta una volta che sei soddisfatto :) –