abstract 키워드로 정의한다.abstract class 클래스명{ } 📝예시
abstract class Player{
void stop(){/*일반메서드내용생략*/};
abstract void play(int pos); //추상 메서드 : 메서드 선언만 되어있고 내용은 구현되지 않은 것.
}
class AudioPlayer extends Player{ // 추상 클래스 상속
void play(int pos){
/*상속받은 추상 메서드 구현*/
}
}
public static void main(String[] arga){
Player p = new Player(); // 에러 - 추상 메서드 : 객체 생성 불가능
AudioPlayer p2 = new AudioPlay(); // 추상메서드를 구현한 클래스 객체생성 가능!
}
abstract 키워드로 정의한다.abstract 리턴타입 메서드이름();꼭 필요하지만 자손마다 다르게 구현될 것으로 에상 될 경우 사용한다 📝예시
abstract class Player{
void stop(){System.out.println("재생 멈춤");};
abstract void play(int pos); //추상 메서드 : 메서드 선언만 되어있고 내용은 구현되지 않은 것.
}
class AudioPlayer extends Player{ // 추상 클래스 상속 -> 일반 메서드와 추상메서드 모두 상속 받음
void play(int pos){
System.out.println(pos+"위치부터 play 합니다~")
}
}
public static void main(String[] arga){
// Player p = new Player(); // 에러 - 추상 메서드 : 객체 생성 불가능
AudioPlayer ap = new AudioPlay(); // 추상메서드를 구현한 클래스 객체생성 가능!
Player p = new AudioPlay(); // 다형성에 의해 객체 생성이 된다.(객체는 AudioPlay를 참조해서 생성했기 때문이다. 타입만 player)
ap.play(100);
ap.stop();
}
📜실행결과
"100위치부터 play 합니다"
"재생 멈춤"