기본 클래스 A
에는 하위 클래스 B
이 있고 B
에는 하위 클래스 C
이 있습니다. A
은 가상 메서드 doStuff()
, B
을 구현하지 않으며 C
을 구현합니다. C
에서, 나는 A
전화를 걸 '(doStuff()
의의 구현 doStuff()
의의 구현을 나는 C
내에서이 작업을 수행 할'하지만 그건별로 중요하지 않아야합니다.) 내가 전화를해야 :기본 클래스에서 동일하게 명명 된 메서드 호출
A::doStuff();
또는 :
B::doStuff();
첫 번째는 실제 구현을 나타 내기 때문에 더 분명합니다. 한편, 나중에 B
이 doStuff()
과 다를 경우 A
과 다른 것으로 결정하면 두 번째 것이 더 유용 할 수 있습니다. 어느 것이 더 표준인가? 어느 것이 더 위험한가요?
B::doStuff()
경고가 발생하지 않았다는 사실에 약간 놀랐지 만, 기본 클래스의 경우에도 B
에 구현이 있다고 가정합니다. 기본 클래스와 구현 체인이 임의로 길고 복잡 할 수 있습니까? 예를 들어, A
에서 Z
까지 각각의 서브 클래스가 있는데, 체인의 어디에서나 구현할 수 있으며, 구현을 찾을 때까지 모든 클래스의 메소드를 '체인'위로 이동시킬 수 있습니까?
아주 깔끔하고 유용한 대안처럼 보입니다. – Luke