{
쉽게 말하면, "기반 클래스"로 디자인 되지 않았으니까, 상속하지 않는건 당연하다. 그런데 왜 이런 말이 나오냐 하면, "잘못된 상속"을 사용할 수 있기 때문이다.
기반 클래스로 쓰이는 클래스의 경우, 대부분 다형성을 이용한 객체의 제어 때문에 사용 된다. 이는 상속하는 클래스 B가 기반클래스 A 처럼 행동 해야 할 때인데,
기반 클래스로 디자인하지 않을 경우, 가상 함수가 없다는 것을 의미한다. 이는 가상 소멸자(다형성을 사용하지 않는다면, 그냥 소멸자라도 상관 없다.)가 없어서, 스택이나 힙이 오염될 수 있고, 기반 클래스 A의 의도와 다르게, 상속 클래스 B를 사용 할 수 있다.
왜냐하면, 기반 클래스 A의 성질을 보다 정확하고 잘 아는 사람은 원래의 제작자이다. 그런 제작자가 기반 클래스로 쓰이지 않도록 구성했던 디자인이다. 가상 함수를 만들지 않음으로써, 상속한다 해도 "상속"의 그 어떤 이점도 없도록 한 것이란 말이다.
인연도 없는데, 끈끈한 관계를 맺어, 땔래야 땔수 없는 사이를 만들면 꽤 피곤하다는 것이다.
결국 단순하게 처리 할 일을 보다 복잡하게 처리 함으로써, 일만 더 커지는 꼴이므로, "기반 클래스로 디자인되지 않은 클래스로부터의 상속은 피하라" 라라고 이야기를 하는 것이다.
이번 항목에선 상속의 우려만 다시 되새김질 했다.
}
최근댓글