추상 클래스?
- 미완성 설계도. 미완성 메소드를 갖고 있는 클래스
- 추상메소드 1개라도 가지고 있으면 추상클래스
abstract class Player { // 추상클래스 (미완성 클래스) abstract void play(int pos); //추상 메소드 (몸통{}이 없는 미완성 메소드) abstract void stop(); // 추상 메소드 }
→ 추상 클래스는 다른 클래스 작성에 도움을 주기 위한 것임. 인스턴스 생성 불가
⇒ 미완성이므로 제품생산 불가
Player p = new Player(); // 에러, 추상클래스의 인스턴스 생성 불가.
↳ 상속을 통해 추상 메소드를 완성하면 인스턴스 생성이 가능
class AudioPlayer extends Player { // Player을 상속받아옴
void play(int pos) { /* 생략 */ } // 추상메소드 구현
void stop() { /* 생략 */ } // 추상메소드 구현
}
AudioPlayer ap = new AudioPlayer(); // 추상메소드 구현했으므로, 인스턴스 생성 가능
추상 메소드?
- 미완성 메소드. 선언부 + 구현부 중, 구현부(몸통 {})가 없는 메소드
⇒ 언제씀? 꼭 필요하지만, 자손마다 다르게 몸통(구현부)이 구현될 것으로 예상되는 경우- 주석을 통해 어떤 기능을 수행할 목적으로 작성하였는지 설명해 놓음.
abstract 리턴타입 메소드이름(); // {} 없음
출처
- 자바의 정석 기초편 - ch 7-31,32