這裏工作的Java代碼Java可以在其他對象中調用父類重寫方法,但不能使用子類型?
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());
}
}
並運行測試類印刷品
MyTCup
MyTCup
i have a color .color is tee green.but brushed to red now!
問題1: 在運行時,對象C的類型是MyTCup,但它總是可以調用超級方法。在初始化對象後,MyTCup中的內存中是否有方法堆棧,然後可以在運行時像代碼一樣調用?
問題2: 無法在其他對象中調用超級方法。據我所知,C++可以隨時強制轉換爲調用父級方法。爲什麼java這樣設計?
你應該接受答案,一旦你滿意它:) – 2013-08-26 11:06:13