假設我有一個SuperClass類和兩個繼承自SuperClass的子類SubClassA和SubClassB。「覆蓋」子類型中的實例變量:可能的風險?
abstract class SuperClass{
...
List someList;
...
}
class SubClassA extends SuperClass{
...
List<String> someList;
...
}
class SubClassB extends SuperClass{
...
List<Integer> someList;
...
}
這樣很方便,因爲我可以在Superclass
得到someList.size()
並在子類具有類型安全。 問題是它沒有「感覺」正確,你能想到這個應用程序的潛在危害,我不知道嗎?
它們可能是指向同一對象的不同引用。 (儘管'private'和'final'將會像以前一樣有幫助。) – 2010-05-19 11:34:55
@Tom,好點,沒有想到...可能是因爲,雖然語義上正確,但這仍然是一個醜陋的,不必要的複雜的,很難了解解決方案(對我)。 – 2010-05-19 12:02:54
我發現了困難的方式,它實際上是陰影。我在這裏做的唯一事情就是編譯器(和我)的伎倆。 – sebastiangeiger 2010-05-20 18:52:58