父对象的java调用方法,即使子对象重写它?
假设我有一个这样的班级:
public class Alpha {
int i = 5;
@Override
public String toString() {
return "Alpha [i=" + i + "]";
}
public String superToString() {
return super.toString();
}
}
然后我在一个主要的
Alpha o = new Alpha();
System.out.println(o.toString()); // display ==> Alpha [i=5]
System.out.println(o.superToString()); // display ==> pojos.Alpha@77468bd9
一切都好。 现在,假设我在Alpha中没有名为superToString()的方法。 有没有办法调用Alpha实例的父对象的方法?(在本例中,对象的toString)
# 1 楼答案
这称为子类重写的方法。类“Alpha”已重写方法“toString”。如果未指定,则类对象是默认的超类
您可以在重写的方法中捕获super的toString,并将其追加/前置到响应中
# 2 楼答案
如果子类重写方法,则无法再从另一个类调用被重写的方法。这是没有办法的
使用反射无助于:
结果:
问题是,任何允许您这样做的机制都在根本上破坏了封装和抽象