Vit*_*ruz 1 methods inheritance smalltalk pharo
我知道可以通过在具体的方法中调用纯虚方法,使用subclassResponsibility或模板方法来实现纯虚方法.现在,可以创建一个具有默认实现的方法,但必须由子类实现?如果是,如何(在Pharo上)?
示例:假设我想提供一个Collection的子类,它对#add进行一些验证,但是没有实现存储,因此留给它的子类来决定做什么.虽然#add确实有一些实现,但它仍然是完成它的子类责任.
首先,Smalltalk中没有"抽象方法"这样的东西.关键的想法是,如果你运行该方法,它会发送subclassResponsibility给self,所以该类告诉你,如果你试图运行它,这个方法实际上是子类的责任.当然IDE可以subclassResponsibility将方法标记为"抽象".
所以我建议你去模板,即
add: aThing
(self validate: aThing)
ifTrue: [ self store: aThing ]
ifFalse: [ "signal error" ]
Run Code Online (Sandbox Code Playgroud)
哪里store:有subclassResponsibility
| 归档时间: |
|
| 查看次数: |
402 次 |
| 最近记录: |