사용법
- 클래스에 선언해서 추상 클래스로 만들면 인스턴스를 생성할 수 없게 된다
- 슈퍼 클래스 역할만 하는 경우, 인스턴스를 생성할 수 없도록 클래스에 선언한다
- 생성자를 선언할 수 있으며, 이 생성자는 서브 클래스에서 사용된다
- 메소드에 선언해서 추상 메소드로 만들면 구현을 강제할 수 있다
- 추상 메소드는 추상 클래스와 인터페이스에서 선언 가능
추상 클래스(abstract class)와 interface의 차이점
추상 클래스(abstract class)
- Java는 다중 상속을 지원하지 않기 때문에 1개의 클래스만 상속 가능
- 필드(상태)와 생성자를 가질 수 있다
추상 메소드(abstract method)
- 상속 받는 클래스에서 구현
- 메소드에 abstract 키워드 추가 필요
- 허용된 접근 제어자: public, protected, package-private(기본값)
구상 메소드(concrete method)
- 추상 클래스에서 구현
- 허용된 접근 제어자: public, protected, package-private(기본값), private
interface
- Java는 다중 구현을 지원하기 때문에 여러 인터페이스를 구현할 수 있다
- 필드(상태)와 생성자를 가질 수 없다
추상 메소드(abstract method)
- 상속 받는 인터페이스 또는 구상 클래스에서 구현
- 메소드에 abstract 키워드 추가 불필요(기본값)
- 허용된 접근 제어자: public(기본값)
기본 메소드(default method)
- 인터페이스에서 구현
- 메소드에 default 키워드 추가 필요
- 허용된 접근 제어자: public(기본값)