subclassResponsibility发送者选择器仍然存在。
我认为这个论点可能会导致这种情况发生,但是呢?
并且有人可以告诉我们原因吗?
在抽象类中我们有这个
fromString: aString
"init with a string"
^self subclassResponsibility
我正在运行:
unit := (Units new fromString: aString)
然后发生错误。
Units 是抽象类。
Travis Griggs目前的方法可以消除错误
实例创建方法有doubledispatch吗?
答案 0 :(得分:6)
那里的细节有点害羞,但看起来它正在按照你说的去做。
表达式Units new
返回了一个新的Units
实例,然后您发送了fromString:
。您已实施以返回发送subclassResponsibility
的结果。
如果Units
真的是一个抽象类,我不会指望你实例化它(你通常不会将new
发送给抽象类,除非你'还在弄乱new
)的行为。
所以我希望你做的事情如下:
unit := (YourRealSubclass new fromString: aString)
YourRealSubclass
实际上是fromString: