[Java] 추상클래스와 인터페이스의 차이

Kim Hyen Su·2024년 10월 1일
0

📐Java

목록 보기
17/18
post-thumbnail

참고 포스팅

추상클래스 vs. 인터페이스

추상 클래스와 인터페이스의 특징을 비교하여 테이블로 나타냈습니다.

추상 클래스인터페이스
사용 키워드abstractinterface
사용 가능 변수제한 없음static final (상수)
사용 가능 접근 제어자제한 없음 (public, private, protected, default)public
사용 가능 메소드제한 없음abstract method, default method, static method
private method
상속 키워드extendsimplements
다중 상속 가능 여부불가능가능
공통점1. 추상 메소드를 가지고 있어야 한다.
2. 인스턴스화 할 수 없다 (new 생성자 사용 불가)
3. 인터페이스 혹은 추상 클래스를 상속받아 구현한 구현체의 인스턴스를 사용해야 한다.
4. 인터페이스와 추상클래스를 구현, 상속한 클래스는 추상 메소드를 반드시 구현해야 한다.

정리하면, 추상클래스와 인터페이스 모두 추상 메서드를 통해 상속/구현 시 강제 구현하도록 해줍니다.

하지만, 상황에 따라서 추상클래스를 사용하는 경우와 인터페이스를 사용하는 경우가 달라집니다.

추상클래스 사용

  • 클래스 관계를 정의할 때, 중복 요소들을 통합 시 사용.
  • 클래스 멤버 내 public 이외의 접근자 선언이 필요한 경우 사용.
  • no-static, non-final 필드 선언이 필요한 경우 사용
  • 추상 클래스는 이를 상속할 각 객체들의 공통점을 찾아 추상화시켜 놓은 것으로, 상속 관계를 타고 올라갔을 때 같은 부모 클래스를 상속하며 부모 클래스가 가진 기능들을 구현해야 할 경우 사용한다.
  • 즉, 추상 클래스는 클래스 관계를 정의할 때, 논리적으로 상속 구조가 필요한 경우 사용된다.

인터페이스 사용

  • 서로 관계가 없는 클래스들을 동일한 기능으로 묶어주고 싶은 경우 사용.
  • 다중 상속을 통한 추상화 설계가 필요할 때 사용.
  • 동일한 메서드에 대해서 구현 객체마다 다양한 기능을 제공할 때 사용.
  • 즉, 인터페이스는 상속 관계에 얽매이지 않고 구현만 하면 자유롭게 다형성을 부여할 수 있도록 해줍니다.
profile
백엔드 서버 엔지니어

0개의 댓글