자바의정석 Ex7_10 추상 클래스,

package Chap07;

public class Ex7_10 {
    public static void main(String() args) {
        Unit() group = { new Marine(), new Tank(), new Dropship() };

        for (int i = 0; i < group.length; i++)
            group(i).move(100, 200);
    }
}   

abstract class Unit {
    int x, y;
    
    //move라는 추상 메서드
    abstract void move(int x, int y);
    void stop() { }
}

class Marine extends Unit {
    
    //추상클래스를 완성시킴
    void move(int x, int y) {
        System.out.println("Marine(x=" + x + ",y=" + y + ")");
    }
    void stimPack() {  }
}

class Tank extends Unit { 
    void move(int x, int y) {
        System.out.println("Tank(x=" + x + ",y=" + y + ")");
    }
    void changeMode() { }
}

class Dropship extends Unit { 
    void move(int x, int y) {
        System.out.println("Dropship(x=" + x + ",y=" + y + ")");
    }
    void load()   {}
    void unload() {}
}

=============실행 결과================

네이비(x=100, y=200)
탱크(x=100, y=200)
직송 (x=100,y=200)

단위
정수 x
정수 y
이동(정수 x, 정수 y)
그만하다()

Unit이라는 추상 클래스가 있습니다.


추상 클래스란 무엇입니까?

  • 하나 이상의 추상 메서드가 있는 클래스를 추상 클래스라고 합니다.

  • 추상 클래스는 개체로 만들 수 없습니다.

  • 객체를 생성하려면 추상 클래스를 상속받은 자식 클래스에서 적절한 추상 메서드를 오버라이드하여 구현한 다음 객체는 하위 클래스로 생성되어야 합니다.


추상 메서드란 무엇입니까?

  • 방법은 원래 ()설명 & {}구현으로 나뉩니다.

    여기
    선언부()까지만 작성되고 구현부에는 없는 메소드를 추상 메소드라고 합니다.


추상 클래스는 어떻습니까?

  • 추상 클래스에서 큰 프레임워크를 설계한 후 자식 클래스에서 상속하여 클래스별 기능을 확장하는 것이 편리합니다.

  • 자식 클래스에서 추상 메서드를 강제로 구현하여 표준화 수준을 높입니다.

  • 각 클래스의 공통 업무를 한 곳(추상 클래스)에서 관리할 수 있어 개발 및 유지보수가 편리합니다.


move(int x, int y)라는 댄스 메소드가 있으므로 조건을 만족한다.

선박 탱크 낙하선
이동(정수 x, 정수 y) 이동(정수 x, 정수 y) 이동(정수 x, 정수 y)
자극팩() 변경모드() 부담()
부리다()

이렇게 하면 추상 클래스를 상속할 때 부모 클래스의 추상 메서드를 사용하게 됩니다.

이동(정수 x, 정수 y) 시행해야 한다

Unit() group = { new Marine(), new Tank(), new Dropship() };

for (int i = 0; i < group.length; i++)
    group(i).move(100, 200);

이 경우 배열을 만들어 동일한 값을 입력했지만 다른 값이 필요한 경우 다른 값을 입력할 수 있습니다.