본문 바로가기

Java의 정석

추상클래스의 작성

상속계층도를 따라 내려 갈수록 세분화되며 올라갈수록 공통 요소만 남게 된다.

 

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메서드의 실제 구현 내용은 다르겠지만 모든 유닛은 이동할 수 있어야 하므로 반드시 필요하며 자신의 클래스에 맞게 구현하면 된다.

'Java의 정석' 카테고리의 다른 글

인터페이스의 상속, 구현  (0) 2022.04.20
인터페이스(interface)  (0) 2022.04.19
추상 메서드(abstract method)  (0) 2022.04.15
추상 클래스(abstract class)  (0) 2022.04.14
객체를 배열로 다루기  (0) 2022.04.13