6. 추상클래스
6.1 추상클래스란?
미완성된 설계도. 미완성 메서드(추상메서드)를 포함하고 있는 클래스.
추상 클래스는 상속을 통해 자손클래스에 의해서만 완성될 수 있음.1
2
3abstract class 클래스이름{
}
6.2 추상메서드
메서드 선언부와 구현부 중 선언부만 작성한것.1
abstract 리턴타입 메서드이름();
1 | abstract class Player{ |
6.3 추상클래스의 작성
- 추상 : 낱낱의 구체적 표상이나 개념에서 공통된 성질을 뽑아 이를 일반적인 개념으로 파악하는 정신 작용.
- 추상화 : 클래스간의 공통점을 찾아내서 공통의 조상을 만드는 작업.
- 구체화 : 상속을 통해 클래스를 구현, 확장하는 작업
1 | abstract class Player{ |
위의 Player추상클래스를 조상으로 하는 CDPlayer1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19class CDPlayer extends player{
void play(int currentPos){
//기능 구현
}
void stop(){
//기능 구현
}
int currentTrace;
void nextTrace(){
currentTrace++;
}
void preTrace(){
if(currentTrace>1){
currentTrace--;
}
}
}
추상메서드로 안 만들고 구현부를 빈 상태로 두어 자손 클래스에서 오버라이드해서 사용할 수 있지만
추상메서드로하면 필수로 구연해야 한다.
1 | class Marine{ |
위에서 공통부분을 뽑아내서 추상클래스 Unit을 만들어 다시 구현.1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18abstract class Unit{
int x,y;
abstract void move(int x, int y);
void stop(){};
}
class Marine extends Unit{
void move(int x, int y){}
void stimPack(){}
}
class Tank extends Unit{
void move(int x, int y){}
void changeMode(){}
}
class Dropship extends Unit{
void move(int x, int y){}
void load(){}
void unload(){}
}
위와같이 구현하면 아래처럼 Unit으로 배열로 다룰 수 있음1
2
3
4
5Unit[] grop = new Unit[4];
group[0] = new Marine();
group[1] = new Tank();
group[2] = new Marine();
group[4] = new Dropship();