我有一個擁有多個子級的抽象父類。我希望孩子能夠爲每個孩子都有一個相同的變量。我不希望傳遞一個構造函數給孩子來告訴它它的名字,因爲它可以被硬編碼時看起來很愚蠢。從我讀過的下面的內容中「隱藏」父變量實例變量並且不按照我的想法工作。Java繼承...困惑
public abstract class Parent {
public String name = "the parent";
public getName(name);
}
public class Child1 extends Parent {
public String name = "Jon";
}
public class Child2 extends Parent {
public String name = "Mary";
}
Child1 c = new Child1();
c.getName(); // want this to return "Jon", but instead returns "the parent".
需要明確的是,基本上是我想要的是像c.getClass()的getName(),但我不希望有這依賴於類的名字,而是一個硬編碼的結果值。
感謝
究竟是什麼*被請求,我不是很清楚。你能澄清你想讓getName()返回你想要的原因嗎?你能寫出一系列應該(但可能不會)通過的斷言嗎? – 2011-04-25 18:55:20
你想解決什麼問題?你能舉一個更好的例子說明爲什麼你需要一個類級別的標籤(每個實例都一樣)?也許我們可以提出一個更好的選擇。 – 2011-04-25 18:57:59
我需要這個名字來支持遺留代碼,因爲我應該直接通過c.getClass()。getName()來使用類名,但是其餘的代碼沒有被寫入來支持這個。 – Tyler 2011-04-25 19:54:07