추상 클래스(abstract class)
- 미완성 설계도. 추상(미완성) 메서드를 갖고 있는 클래스
abstract class Player {
abstract void play(int pos);
abstract void stop();
}
- 다른 클래스 작성에 도움을 주기 위한 것. 인스턴스 생성 불가
Player p = new Player();
- 상속을 통해 추상 메서드를 완성해야 인스턴스 생성가능
(※ 모든 추상 메서드를 구현해야만 한다. 1개라도 덜 구현되면 abstract class 이다!! 덜 구현된 메서드를 구현하던지, abstract class 선언을 해야 함)
class AudioPlayer extends Player{
void play(int pos) { }
void stop() { }
}
AudioPlayer ap = new AudioPlayer();
Player ap = new AudioPlayer();
- 일부만 구현하는 경우, 클래스 앞에 abstract를 붙여야 함.
abstract class AudioPlayer extends Player{
void play(int pos) { }
}
추상 메서드(abstract method)
- 미완성 메서드. 구현부(몸통, {})가 없는 메서드
abstract 리턴타입 메서드이름();
- 꼭 필요하지만 자손마다 다르게 구현될 것으로 예상되는 경우
- 추상 메서드 호출 가능(호출할 때는 선언부만 필요)
abstract class Player {
boolean pause;
int currentPos;
Player() {
pause = false;
currentPos = 0;
}
abstract void play(int pos);
abstract void stop();
void play(){
play(currentPos);
}
}