21 Aug 2020
[Java8] 인터페이스와 추상클래스 차이점
인터페이스 vs 추상클래스
추상클래스
-
추상클래스는 추상메소드를 포함할 수 도 있고 안할 수 도 있다.
-
인스턴스화할 수 없다.
-
추상클래스를 상속받는 클래스에서는 일반적으로 부모클래스에 있는 모든 추상메소드들을
구현한다. 그렇지 않을 경우 해당 서브클래스 또한 abstract로 선언되야한다.
추상클래스 vs 인터페이스(Java 8 기준)
-
추상클래스와 인터페이스는 인스턴스화 할 수 없다.
-
구현부가 있는 메소드와 없는 메소드 모두 가질 수 있다는 점에서 유사
-
인터페이스에서 모든 변수는 public static final, 메소드는 public abstract
인 반면에 추상클래스에서는 static,final이 아닌 필드 지정가능, pubic,protected,private
메소드를 가질 수 있다.
-
인터페이스를 구현하는 클래스는 다른 여러 인터페이스를 다중 상속받아 구현가능
추상 클래스는 다중상속불가
java 8 되서 가장 달라진점
인터페이스도 default키워드를 통해 메소드 구현부를 가질 수 있게 됬다.