我有一个抽象类A
public abstract class A{
private int x;
public void doSomethingToX{...};
public int getX(){
return x;
}
我有7个扩展A的类,每个7都以相同的方式实现doSomethingToX,所以我在A类中定义它。如果B类扩展A,我调用B.doSomethingToX(),然后我调用B .getX(),我会得到B的X值还是得到A?
在我的真实程序中,我有一个A对象的ArrayList
ArrayList<A> list;
我打来电话:
list.add(new B());
list.get(index).doSomethingToX();
list.get(index).getX();
我会得到A的x或B吗?
答案 0 :(得分:1)
如果你不在扩展类上覆盖getX(),你将从A获得x。
如果覆盖getX(),您将获得覆盖方法返回的值。
示例:
A a = new B(); a.getX();
B b = new B(); b.getX();
以上所有行都将返回在B类上覆盖的getX()值。
如果在B类上没有覆盖此方法,那么您将获得在A类上定义的值。