문제

subclassResponsibility sender selector stuck even when subclasses have the method implemented.

I think the argument may cause this happen but is it?

and could anyone tell us why?

in abstract class we have this

fromString: aString
    "init with a string"

    ^self subclassResponsibility

and I am running this:

unit := (Units new fromString: aString)

then error occurs.

In which Units is the abstract class.

Travis Griggs's current approach could remove the error yet

are there doubledispatch for the instance creation method?

도움이 되었습니까?

해결책

Kind of shy on details up there, but it looks like it's doing exactly what you told it to.

The expression Units new returned a new Units instance and then you sent fromString: to that. Which you've implemented to return the result of sending subclassResponsibility.

If Units were truly an abstract class, I wouldn't have expected you to instantiate it (you don't generally send new to abstract classes, unless you're also messing with the behavior of new).

So I would have expected you to do something like:

unit := (YourRealSubclass new fromString: aString)

And that YourRealSubclass has a real implementation of fromString:

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top