Java 공부

2023/03/28 - 추상클래스와 인터페이스의 공통점과 차이

piedra_de_flor 2023. 3. 29. 00:07

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

 


 

 

- 먼저 추상클래스와 인터페이스는 가지고 있는 추상 메서드를 구현하도록 강제하고, 인스턴스화가 불가능다는 공통점을 가지고 있습니다. 하지만,

추상클래스는 확장의 개념으로 extends를 사용하여 자신의 기능을 자식들에게 물려주는 방식이라면,

인터페이스는 설계의 개념으로 implements 를 사용하여 다중상속이 가능하고, 보다 더 추상화 정도가 높습니다.

 

정리하자면 

추상 클래스

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

인터페이스

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

이러한 기능의 목적 차이가 존재합니다.

 

 

그림으로 설명하자면

이처럼

추상클래스는 같은 부모클래스를 가지고 있으며 동일한 부모클래스의 기능을 확장시킴에 목적이 있고,

인터페이스 같은 경우에는 서로 다른 부모클래스를 상속하고 있어도 동일한 기능을 동작시키기 위함에 목적이 있습니다.