【发布时间】:2019-02-13 07:30:40
【问题描述】:
我需要一种方法来选择应该调用谁的方法。
我正在调用一个父方法,该方法使用“this”调用其方法之一。问题是我在我的类中重写了该方法,所以当调用父方法时,它会调用我的方法而不是它的方法。
public class MainTest
{
public static class A
{
public String m1()
{
return this.m2();
}
public String m2()
{
return "A.m2() called";
}
}
public static class B extends A
{
@Override
public String m1()
{
return "B.m1() called";
}
@Override
public String m2()
{
return "B.m2() called";
}
public String m3()
{
return super.m1();
}
}
public static void main(String[] args)
{
System.out.println(new B().m3());
}
}
我想实现“A.m2()被调用”,但实际输出的是“B.m2()被调用”
【问题讨论】:
-
你为什么使用静态类?
-
你的主要方法在哪个类?为什么你的两个类都是静态的?
-
它们可能是另一个类中的嵌套类。无论如何,你不能这样做,除非你在
B中创建一个调用super.m2()的方法。否则它会破坏覆盖方法的意义。
标签: java polymorphism hierarchy