爲了簡化我的實際代碼假設有兩個班,一個接一個的子類:scala:將子類實現重用爲兩個不同類的子類?
class Chair {
val canFold = false;
// ...
}
class FoldableChair extends Chair {
val canFold = true;
// ...
}
,在我執行我將有可能影響數百主席的其他子類或FoldableChair的:
class Armchair extends ... {}
class DeckChair extends ... {}
//... etc
對於這些子類中的每一個,假設每個子類都有很長的實現,但我希望能夠讓它有時擴展主席,有時會擴展FoldableChair - 而不重複代碼。我想這樣做,而不必擴展子類本身。這可能以某種方式嗎?我需要使用特質來做到這一點嗎?
我也想創建一個有時會擴展主席的子類的特定實例,有時會擴展FoldableChair,但是當實例化它時會做出該選擇。這可能嗎?謝謝!
編輯:爲了澄清,我真正想要的是這樣的:
class Armchair extends Chair {}
class ArmchairFoldable extends FoldableChair {}
但扶手椅及ArmchairFoldable的實施是完全一樣的。也就是說,我想不重複他們的實現。
我建議你閱讀這篇文章:http://www.artima.com/scalazine/articles/stackable_trait_pattern.html – 2011-04-29 12:29:12