[Java] 추상클래스 vs 인터페이스 용도와 차이점

민지·2023년 8월 18일
0

Java

목록 보기
13/20

일단 추상클래스나 인터페이스나 두 개의 공통점은 다른 클래스를 작성하는데 도움을 주는 목적으로 작성되었다.

자바의 특성상 한개의 클래스만 상속이 가능하다. 클래스의 구분은 추상클래스 상속을 통해 클래스들이 공통으로 가지는 메서드와 필드가 많아 중복 멤버 통합으로 해결하고, 할 수 있는 기능들을 인터페이스로 구현한다.

모든 클래스가 인터페이스만 사용해서 기본 틀을 구성한다? 그렇다면 공통으로 필요한 기능들도 모든 클래스에서 오버라이딩 하여 재정의를 해야하는데 이건 너무 번거로울거다.
이렇게 공통된 기능이 필요하다면 추상클래스를 이용해서 일반 메서드를 작성하여 자식 클래스에서 사용할 수 있도록 하면 된다. 자바는 하나의 클래스만 상속이 가능하다. 만약 각각 다른 추상클래스를 상속하는데 공통된 기능이 필요하다면? 해당 기능을 인터페이스로 작성해서 구현하는게 편하다.


추상클래스

  • 다중 상속 불가능, 단일 상속만 허용
  • 추상화(추상 메서드)를 하면서 중복되는 클래스 멤버들을 통합 및 확장을 할 수 있다.
  • 인터페이스와 다른점은 추상클래스는 클래스간의 연관 관계를 구축하는 것에 초점을 둔다.

상위 클래스에 선언 된 추상메서드는 더 아래로 상속할 클래스에게 위임도 가능하다. 상속을 위한 클래스니까!


인터페이스

  • 클래스에 다중 구현 가능
  • 인터페이스 끼리는 다중 상속 가능
  • 모든 메서드는 public abstract 로 정의 (default 메서드 제외)
  • 모든 필드는 public static final 상수로 정의
  • 공통 기능이 필요하면 추상 메서드를 정의해높고 구현하는 식으로 추상클래스에 비해 자유롭게 붙였다 땟다 사용한다.



정리

추상클래스는 상속 관계를 타고 올라갔을때 같은 부모 클래스를 상속하며 부모 클래스가 가진 기능들을 똑같이 필요로 하는 경우 사용

인터페이스는 상속 관계를 타고 올라갔을때 다른 부모 클래스를 상속하는데 같은 기능이 필요할 경우 사용

profile
개발일지

1개의 댓글

comment-user-thumbnail
2023년 8월 18일

정보에 감사드립니다.

답글 달기