1 분 소요

추상클래스 (is kind of)

  • 추상클래스는 하위 클래스들의 공통점들을 모아 추상화하여 만든 클래스

  • 추상클래스는 다중 상속이 불가능하여 단일 상속만 허용한다.

  • 추상클래스는 추상 메소드 외에 일반클래스와 같이 일반적인 필드, 메서드, 생성자를 가질수 있다.

  • 이러한 특징으로, 추상클래스는 추상화(추상 메서드)를 하면서 중복되는 클래스 멤버들을 통합 및 확장을 할 수 있다.

  • 같은 추상화인 인터페이스와 다른점은, 추상클래스는 클래스간의 연관 관계를 구축하는 것에 초점을 둔다.

    추상클래스의 활용

    • 공통 멤버의 통합으로 중복을 제거 가능

    • 구현의 강제성을 통한 기능 보장

    • 규격에 맞는 설계 구현

인터페이스 (be Able to)

  • 내부의 모든 메서드는 public abstract 로 정의 (default 메소드 제외)

  • 내부의 모든 필드는 public static final 상수

  • 클래스에 다중 구현 지원.

  • 인터페이스 끼리는 다중 상속 지원.

  • 인터페이스에도 static, default, private 제어자를 붙여 클래스 같이 구체적인 메서드를 가질 수 있음. 따라서 하위 멤버의 중복 메서드 통합을 어느정도 할수는 있겠지만, 필드는 상수이기 때문에 중복 필드 통합은 불가능

  • 인터페이스는 부모 자식 관계인 상속에 얽매이지 않고, 공통 기능이 필요할 때마다 추상 메서드를 정의해놓고 구현(implement)하는 식으로 추상클래스보다 자유롭게 붙였다 땟다 사용

  • 인터페이스는 클래스와 별도로 구현 객체가 같은 동작을 한다는 것을 보장하기 위해 사용하는 것에 초점

  • 다중 구현이 된다는 점을 이용해, 내부 멤버가 없는 빈 껍데기 인터페이스를 선언하여 마커 인터페이스 로서 이용 가능

  • 보통 xxxable 이런 형식으로 인터페이스 네이밍 규칙을 따름

    인터페이스의 활용

    1. 인터페이스의 다형성

      • 형제 관계를 맺어줌

      • 타입 접근 제한

      • 메서드 접근 제한

    2. 의존성을 제거

      • 인터페이스 타입으로 통신
    3. 표준화

      • 개발 시간을 단축
      • 나중에 변경이 용이
    4. 마커 인터페이스

      • 마커 인터페이스는 일반적인 인터페이스와 동일하지만 사실상 아무 메소드도 선언하지 않은 빈 껍데기 인터페이스를 말한다

        (EX : Serializable, Cloneable이 있다)

추상클래스 VS 인터페이스 차이점 요약

추상 클래스(Abstract Class) 인터페이스(Interface)
상속하여 공통된 기능을 만들고, 확장하기 위함 구현하는 객체들이 같은 동작을 보장하기 위함
다중상속 불가능 다중상속 가능
생성자와 일반변수 모두 가질 수 있다. 생성자와 일반변수를 가질 수 없다.
메서드를 부분적으로 구현할 수 있다. 메서드 선언만 가능하다.
extends 키워드를 사용한다. implements 키워드를 사용한다.

이해를 위한 그림

img

-정리-

태그:

카테고리:

업데이트: