我想通过另一个类中的子类调用超类的方法。
例如: A类及其子类CA,CA覆盖A的方法f()
class A{
f();
}
class CA extends A{
@Override
f();
}
B类中的CA实例:
class B{
CA mCA = new CA();
}
有没有办法在B类中调用CA超类(A)的方法f()?像
mCA.super.f(); (I know its wrong)
...
感谢您的帮助:)
答案 0 :(得分:4)
根本没有。
你可以调用你所拥有的类的对象的方法。
BTW为什么要调用超类的方法?
如果您需要这样做,那么您的班级设计就会出现问题。 CA
应该创建自己的方法,您可以直接在课程f()
中调用CA
,而A
会调用类{{1}}的方法。
或者重写的方法应该与原始实现兼容。在这种情况下,不需要调用超类的方法。
答案 1 :(得分:1)
您将使用 reflection 打破封装。像这样......
PS:这不是一个好习惯。这段代码只是为了表明这可以做到。class A {
public static void f() {
System.out.println("A");
}
}
class CA extends A {
public static void f() {
System.out.println("CA");
}
}
class B {
public static void main(String[] args) throws IllegalArgumentException,
SecurityException, IllegalAccessException,
InvocationTargetException, NoSuchMethodException { // got genuinely scared here..
CA mCA = new CA();
mCA.getClass().getSuperclass().getMethod("f", null).invoke(mCA, null);
}
}
O / P:
A