06.16.2023
1. 인터페이스(Interface)와 추상클래스(Abstract Class)의 정의(Definition)
1-1. 추상클래스의 정의
하나 이상의 메소드가 abstract이다.
미완성 설계도라고 볼 수 있다.
1-2. 인터페이스의 정의
모든 메소드가 abstract이다.
청사진(Blue Print)라고 볼 수 있다.
2. 공통점 (Things In Common)
2-1. 하는 일
추상클래스와 인터페이스가 하는 일은 상속받는 클래스가 추상메소드를 구현하도록 하는 것이다.
2-2. 인스턴스화 할 수 없다.
new 키워드의 사용이 불가능하다
3. 차이점 (Differences)
3-1. 존재 이유
추상클래스는 자식 클래스들이 상속받아 추상메소드들의 기능 확장 및 이용이 존재 이유이다.
인터페이스는 함수의 구현을 강제하기 위하여 존재, 즉 구현된 객체들의 동일한 동작을 보장해주기 위하여 존재한다.
3-2. 다중상속
추상클래스 뿐만이 아닌 모든 클래스에 대해 자바는 다중상속을 지원하지 않는다. 하나의 자식 클래스가 한 개 이상의 수퍼클래스를 상속받을 수 없다는 것이다. 다중상속의 모호성 발생을 막기 위함이다.
그러나 인터페이스를 여러개 구현하는 것은 가능하다.
4. 사용 시기 (When to use)
추상클래스는 한 자식클래스의 상속 관계를 타고 올라갔을 때 같은 조상클래스를 상속하며 기능까지 완전히 똑같은 기능이 필요한 경우에 사용.
인터페이스는 한 자식클래스의 상속 관계를 타고 올라갔을 때 다른 조상클래스를 상속하지만 같은 기능이 필요한 경우에 사용.