为什么第二次通话会产生它的作用?我认为通过将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();
}
}
答案 0 :(得分:10)
不,投射无效,因为它是用于选择m1
来调用的对象的动态类型。
以下是诀窍:
void m2() {
super.m1();
}
答案 1 :(得分:0)