2013-06-20 7 views
1

subclassResponsibility 발신자 선택기가 하위 클래스에 구현 된 경우에도 멈 춥니 다.subclassResponsibility 발신자 선택기가 붙음

나는 인수가 일어날 수 있다고 생각하지만 그것입니까?

누구나 그 이유를 말할 수 있습니까? 추상 클래스에서

우리는이

fromString: aString 
    "init with a string" 

    ^self subclassResponsibility 

을 가지고 있고이를 실행하고 있습니다 :

unit := (Units new fromString: aString) 

다음 오류가 발생합니다.

여기서 단위은 추상 클래스입니다.

트래비스 릭스의 현재 접근 방식은 아직

인스턴스 생성 방법에 대한이 doubledispatch있는 오류를 제거 할 수 있을까?

답변

6

세부 정보가 위선적인데, 정확히 말한대로하는 것처럼 보입니다.

표현식 Units new이 새 Units 인스턴스를 반환 한 다음 fromString:을 보냈습니다. subclassResponsibility을 전송 한 결과를 반환하기 위해 구현 한 항목 Units가 진정 추상적 클래스 인 경우

, 나는 (당신은 또한 new의 행동을 장난하지 않는 한 당신은 일반적으로, 추상 클래스에 new를 전송하지 않습니다) 당신이 그것을 인스턴스화 할 것으로 예상 않았을 것이다.

그래서 난 당신과 같이 할 것으로 예상했을 것이다 :

unit := (YourRealSubclass new fromString: aString) 

을 그리고 YourRealSubclassfromString:

의 실제 구현이