[英]Get the right field from an abstract class hierarchy?
我有一個抽象類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的嗎?
如果不在擴展類上重寫getX(),則將從A獲得x。
如果重寫getX(),則將獲取覆蓋方法上返回的值。
例:
A a = new B(); a.getX();
B b = new B(); b.getX();
以上所有行均將返回在B類上覆蓋的getX()值。
如果未在Class B上重寫此方法,則將獲得在Class A上定義的值。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.