abstract class Player {
abstract void play(int pos);
abstract void stop();
}
Player p = new Player(); // 에러 발생
그렇다면 추상클래스를 왜 쓸까요?
class AudioPlayer extends Player {
void play(int pos) { ... }
void stop() { ... }
}
AudioPlayer ap = new AudioPlayer(); // OK
= 이렇게 상속을 받고 써줘야 인스턴스 생성 가능
abstract class AbstractPlayer extends Player {
void play(int pos) { ... }
// stop이 구현 안되어있으므로 클래스에 abstract써줘야함
}
예제.
abstract class Player {
boolean pause;
int currentPos;
Player() {
} // 생성자 있어야함
abstract void play(int pos); // 추상메서드
abstract void stop(); //추상 메서드
void play() {
play(currentPos);
}
}
사용하려면?
AudioPlay라는 객체가 Player로 상속받아서 사용했다면
Player p = new AudioPlayer(); 이렇게 사용가능. - 다형성!!! Polymorphism