Progrow

Progrow

  • 분류 전체보기 (366)
    • Programming Languages (47)
      • JavaScript (13)
      • Java (18)
      • Effective Java (3)
      • Kotlin (11)
      • C++ (1)
      • Groovy (1)
    • Computer Sciences (237)
      • Problem Solve (155)
      • Datastructure (2)
      • Database (20)
      • OS (8)
      • Network (5)
      • Security (10)
      • Design Patterns (19)
      • Compiler (8)
      • BigData (5)
      • OOP (5)
    • Spring (21)
      • Boot (7)
      • Security (7)
      • JPA (6)
      • Session (1)
    • Frontend (10)
      • HTML (2)
      • CSS (3)
      • Vue.js (4)
    • Web (4)
      • REST API (2)
      • Servlet (1)
    • Devops (26)
      • Docker (0)
      • Kubernetes (1)
      • AWS (25)
      • Jenkins (0)
      • Terraform (0)
    • Build Tools (6)
      • Gradle (6)
    • App (1)
      • Android (1)
    • Project (4)
      • DI Framework (3)
      • Capstone Design (1)
    • Redis (1)
    • git (0)
    • etc (9)
      • IT 상식 (4)
      • IT 행사 (2)
      • Heroku (2)
      • vscode (1)
  • 홈
  • 태그
  • 방명록
  • github
RSS 피드
로그인
로그아웃 글쓰기 관리

Progrow

컨텐츠 검색

태그

데이터베이스 Head First Design Pattern Java Design Pattern BFS dfs AWS greedy 프로그래머스 JavaScript String BAEKJOON 정보보호 정보보안 Java Kotlin 투 포인터 programmers DP database 백준

최근글

댓글

공지사항

아카이브

item 18(1)

  • [Effective Java] item 18. 상속보다는 컴포지션을 사용하라

    상속은 코드를 재사용하는 강력한 수단이지만 잘못 사용하면 오류를 만들어내기 쉬운 소프트웨어가 된다. 슈퍼 클래스와 서브 클래스가 같은 프로그래머에 의해 다루어지며 통제하는 경우는 안전하다. 확장할 목적으로 잘 설계되었고 문서화도 잘 된 클래스 또한 안전하다. 그러나 외부 패키지에서 이를 상속하는 경우 문제가 발생한다. 메서드 호출과 달리 상속은 캡슐화를 깨뜨린다. 다르게 말하면 슈퍼 클래스가 어떻게 구현되었느냐에 따라 서브 클래스의 동작에 문제가 생길 수 있다. 슈퍼 클래스는 버전마다 내부 구현이 달라질 수 있다. 이때문에 확장을 충분히 고려하여 설계하지 않거나 문서화가 부족한 경우 이를 상속하는 서브 클래스들은 이에 발맞춰서 코드를 수정해야 하는 불상사가 생긴다. 구체적인 예제를 살펴보자. HashSe..

    2021.11.26
이전
1
다음
티스토리
© 2018 TISTORY. All rights reserved.

티스토리툴바