Buu*_*yen 2 java polymorphism inheritance
运行时的以下代码显然打印出"B1/A2/B2".现在,是否有可能打印"A1/A2/B2"(即A#method2()应该在A上调用method1(),而不是在B上调用?)
注意:我没有这样的需要获得传递多态性,这个问题仅仅是出于好奇.
class A {
public void method1() {
System.out.println("A1");
}
public void method2() {
method1();
System.out.println("A2");
}
}
class B extends A {
@Override public void method2() {
super.method2();
System.out.println("B2");
}
@Override public void method1() {
System.out.println("B1");
}
}
public class Tmp {
public static void main(String args[]) {
B b = new B();
b.method2();
}
}
Run Code Online (Sandbox Code Playgroud)
我不相信; 如果你method1()在一个子类中重写,那就不行了.如果你真的需要这种行为,你必须声明A.method1()为final,而你无法定义它B.
这样做对我来说没有意义 - 如果你认为你需要,你应该重新考虑你的设计!