爲什麼第二次調用會產生它所做的事情?我認爲通過鑄造this
到Super
,只有Super's m1()
應該被稱爲!投到超級未按預期工作
Super!
And Sub!
---
Super!
And Sub!
代碼:
public class TestSuper {
public static void main(String[] args) {
(new Sub()).m1();
System.out.println("---");
(new Sub()).m2(); // !!!!!!!!!!!!!!!!
}
}
class Super {
void m1() {
System.out.println("Super!");
}
}
class Sub extends Super {
void m1() {
super.m1();
System.out.println("And Sub!");
}
void m2() {
((Super) this).m1();
}
}
爲什麼要這樣呢?這與Super s = new Sub()相同。 s.m1(); –