存在问题
如果我有这样的类层次结构:
public class TestSuper {
public static class A {
@Override
public String toString() { return "I am A"; }
}
public static class B extends A {
@Override
public String toString() { return "I am B"; }
}
public static void main(String[] args) {
Object o = new B();
System.out.println( o ); // --> I am B
// ?????? // --> I am A
}
}
从main方法来看,当实例是B类型时,是否可以调用A的toString???
当然,像 o.super.toString() 这样的东西不能编译......
最佳答案
你不能,而且是故意如此:它会破坏封装。
假设您有一个类,它使用一种方法来根据某些业务规则验证输入,然后调用父类(super class)方法。如果调用者可以忽略重写,这将使该类变得毫无意义。
如果您发现自己需要这样做,请重新审视您的设计。
关于java - 如何调用 super 方法(即 : toString()) from outside a derived class,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6386343/