인터페이스에서 디폴트 메소드를 작성할 수 있게 됨으로써 추상 클래스와 언뜻 보면 차이가 없어 보인다.

실제로 인터페이스에 디폴트 메소드를 작성해서 코드를 작성해보려니 추상으로 풀 수도 있는거 아냐? 라는 생각이..

다시금 추상클래스와 인터페이스와의 차이를 알아보도록 하자.

 

인터페이스와 추상 클래스는 존재 목적이 다르다.

=> 추상 클래스는 추상 클래스를 상속 받아서 기능을 이용하고, 확장하는 데에 있다.

=> 인터페이스는 큰 틀을 사전에 짜놓는 것으로써 그 틀에 맞추어 구현을 하라는 데 의의가 있다. 이를 통해 인터페이스를 구현한 객체들은 동일한 동작을 약속할 수 있게 됩니다.

  • 추상 클래스, 인터페이스 둘 다 불완전 한 것이기 때문에 인스턴스화가 불가, extends하거나 implements해야 합니다.
  • 인터페이스는 여러개 인터페이스를 함께 구현 가능, 추상클래스는 다중 상속이 불가하다.
  • 추상 클래스에는 public, protected, private 메소드를 가질 수 있습니다. 반면에 인터페이스는 public만 허용됩니다.
  • 추상 클래스에는 멤버변수 선언이 가능하지만 인터페이스는 public static final 이어야 한다. 

=> 각각 다른 추상클래스를 상속하는데 공통된 기능이 필요하다면? 해당 기능을 인터페이스로 작성해서 구현

 

 

+ 학원에서 교육 받을 때에는 아래와 같이 교육받았다... 

추상클래스는 IS - A "~이다".

인터페이스는 HAS - A "~을 할 수 있는".

 

출처

https://codechacha.com/ko/java8-default-methods/

https://myjamong.tistory.com/150

+ Recent posts