10
我有一個問題,關於這個代碼就在這裏多態性和靜態方法
public Car {
public static void m1(){
System.out.println("a");
}
public void m2(){
System.out.println("b");
}
}
class Mini extends Car {
public static void m1() {
System.out.println("c");
}
public void m2(){
System.out.println("d");
}
public static void main(String args[]) {
Car c = new Mini();
c.m1();
c.m2();
}
}
我知道,多態性不能用靜態方法的工作,只爲實例方法。而且這個覆蓋不適用於靜態方法。
因此,我認爲這個程序應該打印出來:C,d
因爲C調用M1的方法,但它是靜態的,所以它不能重寫,並調用類小型而不是汽車的方法。
這是正確的嗎?
然而,我的書說,答案應該是:一,d
是一個錯字?因爲我現在有點困惑。
請清除此,謝謝。
+1對於*這就是爲什麼你不應該通過像這樣的實例調用靜態方法。* – Joffrey