2010-04-30 4 views

답변

3

doSomething이 여러 다른 클래스에 의해 다른 반환 유형으로 구현 될 수 있기 때문에 반환되는 유형을 확실히 알 수 없습니다.

나는 컴파일러가 그 이름을 가진 모든 메소드 구현을 찾고, 그 중 적어도 하나가 위의 예제에서 int를 리턴한다고 생각한다. "doSomething"서명이 int를 반환하지 않으면 경고를 표시합니다.

2

컴파일러는 현재 표시되어있는 모든 메서드를 알고 있습니다. 전송중인 메시지의 유형이 있으면 해당 유형을 사용합니다. 선택자를 모두 가진 여러 메소드 유형을 알고 있다면 임의로 하나를 선택하여 경고와 버그가 발생할 수 있습니다. 그러한 메서드의 형식을 모르는 경우 메서드에서 id을 반환한다고 가정합니다.