개발하는 두더지

[Effective Java 규칙16] 상속(extends)하는 대신 구현(implements)하라 본문

Java,Android

[Effective Java 규칙16] 상속(extends)하는 대신 구현(implements)하라

덜지 2018. 9. 17. 21:31

[Effective Java 규칙16] 계승하는 대신 구성하라

Effective Java 2/E 책과 구글링을 통해 내용을 정리하고 개인적인 견해가 포함된 글입니다.



상속은 강력한 도구이지만 캡슐화 원칙을 침해하므로 문제를 발생시킬 가능성이 있다. 그리고 상위 클래스와 하위 클래스가 IS-A 관계일 때만 사용하는 것이 좋다. 만약 IS-A 관계가 성립해도, 하위 클래스가 상위 클래스와 다른 패키지에 있거나 상속을 고려해 만들어진 클래스가 아니라면 하위 클래스는 깨지기 쉽다. 이런 문제들을 피하려면 상속(extends)대신 구현(implements)해야한다. 래퍼 클래스를 만든다면 하위 클래스를 만드는 것보다 견고하고 강력하다


//TODO 철학/유래 찾아보기

자바는 처음 설계부터 다중상속을 지원하지 않게 만들어져서 나중에 다중상속처럼 지원가능한 인터페이스가 생김



Comments