Java의 정석
추상클래스의 작성
donghyeob.k
2022. 4. 18. 20:19
상속계층도를 따라 내려 갈수록 세분화되며 올라갈수록 공통 요소만 남게 된다.
public class abstractClassExam {
public static void main(String[] args) {
Unit[] group = new Unit[3];
group[0] = new Marine();
group[1] = new SiegeTank();
group[2] = new Dropship();
// or
// Unit[] group = {new Marine(), new SiegeTank(), new Dropship()};
for(int i = 0; i < group.length; i++) {
group[i].move(100,200);
}
}
}
abstract 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 SiegeTank extends Unit {
void move(int x, int y) {};
void siegeMode() {};
}
class Dropship extends Unit {
void move(int x, int y) {};
void drop() {};
void lift() {};
}
각 클래스의 공통부분으로 Unit클래스를 정의하고 이로부터 상속받고있다.
move메서드가 추상메서드로 선언된 것은 Marine, SiegeTank는 지상 유닛, Dropship은 공중 유닛으로 move메서드의 실제 구현 내용은 다르겠지만 모든 유닛은 이동할 수 있어야 하므로 반드시 필요하며 자신의 클래스에 맞게 구현하면 된다.