abstract class Player {
abstract void play(int pos); // 몸통이없는 메서드
abstract void stop();
}
abstract class Player { // 추상 클래스
abstract void play(int pos); // 추상메서드
abstract void stop();
}
class AudioPlayer extends Player {
void play(int pos){ } // 추상메서드를 구현
void stop(){ } // 추상메서드를 구현
}
abstract class AbstractPlayer extends Player {
void play(int pos) { } // 추상메서드를 구현
}
AbstractPlayer 클래스 생성시 abstract를 안붙이면 오류
--> 상속받은 것을 모두 구현해야 abstract를 안붙일 수 있음
abstract class Player{ // 추상 클래스(미완성 클래스)
abstract void play(int pos); // 추상 메서드(미완성 메서드)
abstract void stop(); // 추상 메서드(몸통이 없음 ~)
}
// 추상 클래스는 상속을 통해 완성해야 객체 생성 가능
class AudioPlayer extends Player{
void play(int pos) {System.out.println(pos + "위치부터 play"); }
void stop() {System.out.println("재생을 멈춤");}
}
public class PlayerTest{
public static void main(String[] args) {
// Player p = new Player(); // 추상 클래스의 객체를 생성
// AudioPlayer ap = new AudioPlayer();
Player ap = new AudioPlayer();
ap.play(100);
ap.stop();
}
}
추상메서드로 껍데기만 만들어주고 상속받아서 자식클래스에서 구현해가지구
조상메서드가 자식생성자를 가리키면서 사용함
1. 조상 메서드로 만듦으로써 여러가지 자식생성자를 한번에 호출할 수 있음
2. 조상 메서드를 추상클래스로 만듦으로서 자식 생성자가 새로 메서드를 만들어야 함을 명시, 자식클래스에서 원하는 데로 수정하여 사용가능