abstract와 interface중 어떤게 더 효율적일까?

둘의 가장 큰 차이는 추상 클래스가 정의한 타입을 구현하는 클래스는

반드시 추상 클래스의 하위 클래스가 되어야한다는 점이다.

 

반면 인터페이스가 선언한 메소드를 모두 정의하고 그 일반 규약을 잘 지킨 클래스라면

다른 어떤 클래스를 상속했든 같은 타입으로 취급한다.

 

둘의 사용 목적도 다르다.

 

추상클래스 -> 부모 클래스의 메소드(기본) + 자식클래스의 메소드 (확장, Is-a 관계)

interface -> 함수의 껍데기만 받아서 재정의(interface의 메소드를 무조건 재정의 해야함, Has-a 관계)

 

자바는 다중 상속을 지원하지 않기 때문에 absctract는 어느 정도 제약이 따른다

(extends뒤에 여러개 안된다는 의미)

반면 interface는 여러개의 인터페이스를 구현할 수 있는 장점이 있다.

 

책에서 말하듯이 인터페이스는 계층구조가 없는 타입 프레임워크 만들 수 있는게 큰 장점인것 같다.

여기까지가 내가 기본적으로 알고 있어야하는 추상클래스와 인터페이스의 차이이고

 

이후로 책에서는 골격 구현 클래스에서 추가적으로 설명하고 있는데 이부분은 지금은 스킵하고 추후에 실력이 상승한다면 포스팅 해보겠다.

+ Recent posts