0
這是我的考試給我一個編碼的問題,我似乎無法弄清楚發生了什麼,將是有益的,如果有人能告訴我發生了什麼:)調用重載方法鑄造類與「本」關鍵字
class A1 {
void m1() {
System.out.println("A");
}
}
class B1 extends A1 {
void m1() {
System.out.println("B");
}
}
class C1 extends B1 {
void m1() {
System.out.println("C");
}
}
public class D1 extends C1 {
void m1() {
System.out.println("D");
}
void m2() {
m1();
((C1) this).m1();
((B1) this).m1();
((A1) this).m1();
}
public static void main(String args[]) {
new D1().m2();
}
}
這將產生輸出:
D
D
D
D
我的預期輸出:
D
C
B
A
我想知道爲什麼即使在使用「this」關鍵字的情況下,它仍然在調用同一個類中的方法。
的可能的複製[Java繼承(http://stackoverflow.com/questions/3506412/java-inheritance) – Winter
因爲雖然你施放該類型您的實例仍然是最派生之一。因此,當你調用'm1'時,也會使用派生最多的方法,這是在'D'中定義的。 – HimBromBeere