這似乎是一個常見任務,但我有點困惑。假設我有一個帶有數據成員和相應的getter/setter的抽象父類。要求子類設置父類的數據成員
public abstract class Parent {
private MyObj myObj;
public MyObj getMyObj() { return myObj; }
public void setMyObj(MyObj myObj) { this.myObj = myObj; }
}
我需要強制子類設置「myObj」變量。我有2個選項:
- 使setter「抽象」(但不是吸氣劑)。這似乎很奇怪 我,我以前沒有見過它。
避免根據 家長聲明數據成員。只有一個父方法,
abstract public MyObj getMyObj();
然後父總是引用作爲getMyObj()。getField1(),getMyObj()。getField2()等。每個創建一個新對象時,而不是將其存儲在一個地方。
什麼是強制子類設置父類的數據變量的標準方法?它是一個新的抽象方法,在getters/setters之外?
爲什麼你甚至需要做到這一點?爲什麼不重複使用相同的數據成員,getter和setter? – Mureinik
@Mureinik:原因是,雖然你可以從子類調用setMyObj(),但你不需要這樣做。但孩子必須設置它。 –
如果該值是必需的,則需要在構造函數中使用該值。 – David