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();