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);
이 경우 배열을 만들어 동일한 값을 입력했지만 다른 값이 필요한 경우 다른 값을 입력할 수 있습니다.