subclassResponsibility发送者选择器卡住了

时间:2013-06-20 19:55:54

标签: smalltalk pharo squeak

即使子类实现了方法,

subclassResponsibility发送者选择器仍然存在。

我认为这个论点可能会导致这种情况发生,但是呢?

并且有人可以告诉我们原因吗?

在抽象类中我们有这个

fromString: aString
    "init with a string"

    ^self subclassResponsibility

我正在运行:

unit := (Units new fromString: aString)

然后发生错误。

Units 是抽象类。

Travis Griggs目前的方法可以消除错误

实例创建方法有doubledispatch吗?

1 个答案:

答案 0 :(得分:6)

那里的细节有点害羞,但看起来它正在按照你说的去做。

表达式Units new返回了一个新的Units实例,然后您发送了fromString:。您已实施以返回发送subclassResponsibility的结果。

如果Units真的是一个抽象类,我不会指望你实例化它(你通常不会将new发送给抽象类,除非你'还在弄乱new)的行为。

所以我希望你做的事情如下:

unit := (YourRealSubclass new fromString: aString)

YourRealSubclass实际上是fromString: