JAVA

객체지향 추상 클래스, 추상 메서드

연93 2022. 9. 26. 22:25

미완성 설계도. 미완성 메서드를 갖고 있는 클래스

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() { /* 내용 생략 */ }		   // 추상메서드를 구현
}

예제

abstract  class Player {       // 추상클래스 (미완성 클래스, 미완성 설계도)
	abstract void play(int pos); // 추상 메서드(미완성 메서드)
	abstract void stop();  // 추상메서드(선언부만 있고 구현부{}가 없는 메서드
}

// 추상 클래스는 상속을 통해 완성해야 객체 생성가능
class AudioPlayer extends Player{

	@Override
	void play(int pos) { System.out.println(pos + "위치부터 play합니다.");}
	@Override
	void stop() {System.out.println("재생을 멈춥니다.");}
}

public class PlayerTest {

	public static void main(String[] args) {
//		Player p = new Player(); // 추상 클래스의 객체를 생성 에러 
		AudioPlayer ap = new AudioPlayer();
		ap.play(100);
		ap.stop();
	}
}