假设我有两个班级, a 和 b 。
public class a{
public void m1(){
System.out.println("a1");
}
public void m2(){
m1(); //overridden in b
System.out.println("a2");
}
}
public class b extends a{
public static void main(String[] args){
b obj = new b();
obj.m2();
}
public void m1(){
System.out.println("b1");
}
}
我很想知道是否有办法强迫 a 的m2()
始终致电 a m1()
,而不是 b 或任何其他子类。我知道如果被 b 覆盖,super.m1()
会调用 a 的m1()
,但我担心这意味着m1()
必须在每个子类中重写,超类本身无法调用m2()
。我希望每次致电 a 的m2()
来调用 a 的m1()
内部,无论如何是否在 a ,像 b 这样的子类中调用了m1()
或者没有覆盖m1()
的子类。
我在这里发现了一些使用反射来做这样的事情,但听起来这些方法很昂贵。还有另一种,最好是更便宜的方式吗?