책 정리/Effective C#
item 20, interface의 구현과 virtual 메서드의 overriding을 구분하라.
최익필
2010. 7. 10. 13:42
포스트를 만든 목적
- 지하철에서 책 보다가 정리할 겸 만들었다.
내용
무엇이 헷갈리길래 구분하는 것인가?
서로 다른 타입이지만, 공통 분모 함수 선언을 갖을 수 있는 점 때문에 헷갈린다. 이러한 헷갈림은 interface 사용법과 virtual 메서드 사용법에 헷갈림을 준다. 다음 사용 예제를 보면, 헷갈릴 것이다.
그러면 언제 interface를 사용 하는게 적당한가?
C++ Template 를 해보았다면, 쉽게 이해가 되는데, "틀"만 필요할 경우에 interface를 쓴다. 즉, 함수 선언, 변수 선언만 공통 분모로 만들기 위해서 사용하는게 적당하다.
그러면 언제 virtual method를 사용 하는게 적당한가?
함수 선언, 변수 선언 및 내용까지 공통 분모로 만들기 위해서 사용 하는게 적당하다.
많이 헷갈리지도 않는데, 꼭 구분해야 하는가?
사실 난 그렇게 헷갈리지 않는다. 10만줄 짜리 C# 프로젝트를 안해봐서, 모르기 때문일 수도 있다. 그러므로 나는 구분해서 쓸란다. 구분해서 썻을 때, 보다 더 직관적이기 때문이다. 다음 예제 코드를 보고 스스로 결정하는게 좋겠다.
결론
- 나는 구분해서 쓰겠다.
여담
- 이상하게 오늘 아침에 일어 났더니, 머리가 헤롱 헤롱 거린다. 헤롱헤롱 거리면서 포스트 쓰기란 쉽지 않다.