ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [CS] 추상클래스, 인터페이스
    CS 2022. 12. 27. 16:32
    728x90

    추상 클래스

    • 추상 메서드를 선언하여 상속을 통해서 자손 클래스에서 완성하도록 유도하는 클래스이다.
    • 미완성 설계도 라고도 불린다 ( 미완성 → 추상 메서드를 포함한다는 의미 )
    • 상속을 위한 클래스이기 때문에 new를 통해 객체를 생성할 수 없다
    • class 앞에 "abstract" 예약어를 사용하여 상속을 통해서 구현해야한다는 것을 알려주고 선언부만 작성하는 추상메서드를 선언할 수 있습니다.
    abstract class 클래스이름 {
        ...
        public abstract void 메서드이름();
    }
    

     

    인터페이스

    • 추상 클래스보다 추상화가 높아서, 추상 클래스와 달리 일반 메서드나 멤버 변수를 갖을 수 없다
    • 기본 설계도라고 할 수 있습니다
    • 다중 상속이 가능하다.
    interface 인터페이스이름 {
        public static final 상수이름 = 값;
        public abstract void 메서드이름();
    }
    

     

    추상 클래스와 인터페이스의 공통점

    • 둘다 가지고 있는 추상 메서드를 구현하도록 강제한다
    • 인스턴스화 불가능

     

    추상 클래스와 인터페이스의 차이점

    둘의 차이점은 사용용도에 집중해서 봐야한다

    1. 사용의도 차이점
    2. 추상클래스는 is-a , 인터페이스는 has-a 로 다중상속 가능 여부에 따라 용도를 정한다
    3. 공통된 기능 사용 여부

     

    각각의 적절한 사용 케이스 정리

    추상 클래스

    • 관련성이 높은 클래스 간에 코드를 공유하고 싶은 경우
    • 추상 클래스를 상속 받을 클래스들이 공통으로 가지는 메소드와 필드가 많거나,public이외의 접근자(protected, private) 선언이 필요한 경우
    • non-static, non-final 필드 선언이 필요한 경우 (각 인스턴스에서 상태 변경을 위한 메소드가 필요한 경우)

    인터페이스

    • 서로 관련성이 없는 클래스들이 인터페이스를 구현하게 되는 경우.ex) Comparable, Cloneable 인터페이스는 여러 클래스들에서 구현되는데, 구현클래스들 간에 관련성이 없다.
    • 특정 데이터 타입의 행동을 명시하고 싶은데, 어디서 그 행동이 구현되는지는 신경쓰지 않는 경우.
    • 다중상속을 허용하고 싶은 경우

     

    참조

    https://myjamong.tistory.com/150

    https://velog.io/@new_wisdom/Java-추상-클래스와-인터페이스의-차이

    'CS' 카테고리의 다른 글

    [CS] 멀티 스레드  (0) 2022.12.27
    [CS] 클라우드  (2) 2022.12.27
    [CS] CDN  (0) 2022.12.27
    [CS] 메세지 큐  (0) 2022.12.27
    [CS] GC 알고리즘  (0) 2022.12.26
Designed by Tistory.