베어_
TechBear
베어_
전체 방문자
오늘
어제
  • 분류 전체보기 (336)
    • Spring (33)
      • 개념 (13)
      • Security (5)
      • 실습 (1)
      • 토비 스프링 (11)
    • JPA (6)
    • 프로젝트 기록 (24)
    • DB (13)
    • JAVA (18)
    • 알고리즘 (50)
      • 유형정리 (8)
      • Baekjoon (21)
      • LeetCode (18)
    • 디자인패턴 (0)
    • 개발서적 (79)
      • Effective Java (78)
      • 객체지향의 사실과 오해 (1)
    • 독후감 (4)
    • 보안 (2)
    • 운영체제(OS) (53)
      • 공룡책 (53)
    • 컴퓨터 네트워크 (28)
      • 컴퓨터 네트워크 하향식 접근 (23)
    • 자료구조 (1)
    • DevOps (2)
    • 앱 개발 (20)
      • 안드로이드 스튜디오 (20)

블로그 메뉴

    공지사항

    인기 글

    태그

    • BFS
    • 알고리즘
    • 운영체제
    • leetcode
    • 토비스프링
    • 백준
    • 스프링
    • java
    • C++
    • 자바
    • 스레드
    • 스프링시큐리티
    • 코드업
    • 함수형인터페이스
    • 자바8
    • 이펙티브자바
    • dfs
    • 데이터베이스
    • jpa
    • Spring

    최근 댓글

    최근 글

    티스토리

    hELLO · Designed By 정상우.
    베어_

    TechBear

    개발서적/Effective Java

    [Effective Java] 추상 클래스보다 인터페이스를 우선하라

    2023. 5. 25. 01:40

    인터페이스의 장점

    1. 상속이 여러개 가능하기 때문에 믹스인이 가능하다.
    2. 계층구조가 불분명한 클래스들을 설계하기 유리하다.
    3. 래퍼 클래스와 함께 사용하면 인터페이스 기능을 향상 시키는 안전하고 강력한 수단이 된다.
    4. 구현이 명백한 것은 인터페이스의 디폴트 메서드를 사용해 프로그래머의 일감을 줄일 수 있다.

    default 메서드

    1. 인터페이스를 상속하면 인터페이스에 정의된 모든 메서드들을 구현해야 한다. 하지만 많은 외부 클래스가 이미 이 인터페이스를 사용하고 있다면 중간에 메서드를 삽입하는 것이 쉽지 않다. 이때, default 메서드를 이용할 수 있다.
    2. 구현이 명백한 것, 공통된 것은 인터페이스의 디폴트 메서드를 사용해 정의함으로써 인터페이스를 상속하여 사용할 프로그래머의 일감을 줄일 수 있다.

    추상 클래스

    자바8 default 메서드의 등장으로 추상 클래스의 사용이 줄어들었지만, 그럼에도 불구하고 필요한 경우가 있다.

    1. 구현체의 필드 등을 이용해서 구현을 해야하는 경우
    2. 구현체의 메서드가 너무 많아 모두 정의하는 것이 힘든 경우 추상클래스를 이용하여 필요한 메서드만 재정의할 수 있다.
    저작자표시 비영리 변경금지 (새창열림)
      '개발서적/Effective Java' 카테고리의 다른 글
      • [Effective Java] 인터페이스는 타입을 정의하는 용도로만 사용하라
      • [Effective Java] 인터페이스는 구현하는 쪽을 생각해 설계하라
      • [Effective Java] 상속을 고려해 설계하고 문서화하라
      • [Effective Java] 상속보다는 컴포지션을 사용하라
      베어_
      베어_
      Today I learned | 문제를 해결하는 개발자

      티스토리툴바