现有问题
如果我有一个像这样的类层次结构:
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
}
}
在实例类型为B的情况下,是否可以从main方法调用A的toString?
当然,像o.super.toString()这样的东西不会编译...
您不能这样做,而且是非常故意的:它会破坏封装。
假设您有一个使用某种方法根据某些业务规则验证输入的类,然后调用超类方法。如果调用方可以忽略该覆盖,那么它将使该类变得毫无意义。
如果发现自己需要这样做,请重新设计。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句