使用的方法调用
super只会忽略当前类中的所有覆盖。例如:
class Parent { @Override public String toString() { return "Parent"; }}class Child extends Parent { @Override public String toString() { return "Child"; } public void callToString() { System.out.println(toString()); // "Child" System.out.println(super.toString()); // "Parent" }}在调用的情况下
getClass(),这是一个方法,它返回被调用的类,并且不能被覆盖-
因此,尽管我可以看到您为什么期望它返回
Parent.class,但它仍然使用与通常相同的 实现
,返回
Child。(如果您确实需要父类,则应查看
ClassAPI。)
实际上,通常将其用作替代的一部分。例如:
@Override public void validate() { // Allow the parent class to validate first... super.validate(); // ... then perform child-specific validation if (someChildField == 0) { throw new SomevalidationException("..."); }}


