상속
-
10강. 코틀린에서 상속을 다루는 방법BackEnd/Kotlin 2024. 3. 4. 06:30
추상 클래스 인터페이스 클래스를 상속할 때 주의할 점 상속 관련 지시어 정리 추상 클래스 다음은 추상클래스인 JavaAnimal 코드입니다. public abstract class JavaAnimal { protected final String species; protected final int legCount; public JavaAnimal(String species, int legCount) { this.species = species; this.legCount = legCount; } abstract public void move(); public String getSpecies() { return species; } public int getLegCount() { return legCount; ..
-
Item 19. 상속을 고려해 설계하고 문서화하라. 그러지 않았다면 상속을 금지하라Book/Effective Java 3E 2022. 10. 26. 22:20
상속용 클래스는 재정의할 수 있는 메서드들을 내부적으로 어떻게 이용하는지(자기사용) 문서로 남겨야 합니다. '재정의 가능'이란 public과 protected 메서드 중 final이 아닌 모든 메서드를 뜻합니다. API 문서의 메서드 설명 끝에서 종종 "Implementation Requirements"로 시작하는 절을 볼 수 있는데, 그 메서드의 내부 동작 방식을 설명하는 곳입니다. 이 절은 메서드 주석에 @implSpec 태그를 붙여주면 자바독 도구가 생성해줍니다. @implSpec 태그는 자바 8에서 처음 도입되어 자바 9부터 본격적으로 사용되기 시작했습니다. 이 태그를 활성화하려면 명령줄 매개변수로 -tag "impleSpec:a:Implementation Requirements"를 지정해주면 됩..
-
Item 18. 상속보다는 컴포지션을 사용하라Book/Effective Java 3E 2022. 10. 22. 09:40
상속은 코드를 재사용하는 강력한 수단이지만, 항상 최선은 아닙니다. 이 책에서의 '상속'은 클래스가 다른 클래스를 확장하는 구현 상속을 말합니다. 메서드 호출과는 달리 상속은 캡슐화를 깨뜨립니다. 다르게 말하면, 상위 클래스가 어떻게 구현되느냐에 따라 하위 클래스의 동작에 이상이 생길 수 있습니다. 상위 클래스는 릴리스마다 내부 구현이 달라질 수 있으며, 그 여파로 코드 한 줄 건드리지 않은 하위 클래스가 오동작할 수 있다는 말입니다. 상위 클래스와 하위 클래스를 모두 같은 프로그래머가 통제하는 패키지 안에서라면 상속도 안전한 방법입니다. 확장할 목적으로 설계되었고 문서화도 잘 된 클래스(Item 19)도 마찬가지로 안전합니다. 하지만 일반적인 구체 클래스를 패키지 경계를 넘어, 즉 다른 패키지의 구체 ..