추상 클래스 : 클래스 안에 하나 이상의 추상 메소드가 구현되어 있는 클래스
인터페이스 : 클래스 안의 모든 메소드가 추상 메소드
두 개가 하는 일은 서로 비슷하다. 서브 클래스가 슈퍼 클래스에 정의 되어 있는 추상 메소드를 구현하도록 강제한다.
하지만 서로 사용하는 목적에서 차이를 보인다.
추상 클래스
- 먼저 추상 클래스는 슈퍼 클래스에 구현되어 있는 메소드나 필드 등은 그대로 상속 받아 사용(재사용)하고 슈퍼 클래스에 존재하는 추상 메소드를 서브 클래스에서 구현하여 기능을 확장(확장)시켜 나가는데 사용한다.
- public, private 등의 접근 제한자나 static, final등이 아닌 필드를 가질 수 있다.
- extends 키워드를 사용하여 상속하며, 다중 상속은 불가능하다.
- 슈퍼 클래스의 기능들을 하위 클래스에서 확장시켜 나가기 위해 사용
- 재사용과 확장의 개념
인터페이스
- 반면에 인터페이스는 함수의 이름만 선언하여 인터페이스를 상속받는 클래스들이 같은 기능(행동)을 구현하도록 보장하는데 목적이 있다.
- 모든 메소드는 추상 메서드여야 한다.
- 모든 멤버 변수는 public static final이어야 하고 이를 생략할 수 있음
- implements 키워드를 사용하여 상속하며, 다중 상속이 가능(','를 이용)
- 인터페이스에서 정의된 메소드(기능)를 클래스에서 구현하도록 하기 위해 사용
혹시 잘못된 부분이 있다면 알려주시면 감사하겠습니다!