추상클래스(abstract class)
- 미완성 설계도. 미완성 메서드를 갖고 있는 클래스
1 | abstract class Player{ // 추상클래스(미완성 클래스) |
2 | abstract void play(int pos); // 추상메서드(몸통{}이 없는 미완성 메서드) |
3 | abstract void stop(); // 추상메서드 |
4 | } |
- 다른 클래스 작성에 도움을 주기 위한 것. 인스턴스 생성 불가
1 | Player p = new Player(); // 에러. 추상 클래스의 인스턴스 생성 불가 |
- 상속을 통해 추상 메서드를 완성해야 인스턴스 생성가능
- 구현: 상속한 추상메서드의 몸통
{}
을 채워주는 것
1 | class AudioPlayer extends Player { |
2 | void play(int pos) { |
3 | /* 내용생략 */ |
4 | } // 추상메서드를 구현 |
5 | void stop(){ |
6 | /* 내용 생략 */ |
7 | } |
8 | } // 추상메서드를 구현 |
9 | |
10 | AudioPlayer ap = new AudioPlayer(); // OK |
추상 메서드(abstract method)
- 미완성 메서드. 구현부(몸통
{}
가 없는 메서드 - 꼭 필요하지만 자손마다 다르게 구현될 것으로 예상되는 경우 / 꼭 사용해야하는 강제성부여기능도 있음
1 | abstract 리턴타입 메서드이름(); |
1 | abstract class Player { |
2 | abstract void play(int pos); |
3 | abstract void stop(); |
4 | } |
5 | |
6 | class AudioPlayer extends Player { |
7 | void play(int pos){/* 내용생략 */} |
8 | void stop(){/* 내용생략 */} |
9 | } |
10 | |
11 | abstract class AbstractPlayer extends Player { |
12 | void play(int pos){/* 내용생략 */} // 추상메서드를 1개만 구현. 미완성. |
13 | } |