为了简化我的实际代码假设有两个班,一个接一个的子类: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