簡體   English   中英

從抽象類層次結構中獲取正確的字段?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM