미완성 설계도 입니다.
단지 미완성 클래스입니다.
abstract class 클래스이름{ // 미완성 메서드 추상메서드
}
abstract class Player{ // 추상클래스 (미완성 클래스)
abstract void play(int pos); // 추상 메서드 (몸통 {}이 없는 메서드)
abstract void stop(); // 추상 메서드
void move() { /* 생략 */ }
}
다른클래스 작성에 도움을 주기 위한 것입니다
인스턴스 생성 불가
추상적 클래스의 작성
lass Marine {
int x, y;
void move(int x, int y) { 지정된 위치로 이동 }
void stop() { 정지 }
void stimPack() { 스팀팩 사용 }
}
class Tank {
int x, y;
void move(int x, int y) { 지정된 위치로 이동 }
void stop() { 정지 }
void changeMode() { 공격모드로 변환 }
}
class Dropship {
int x, y;
void move(int x, int y) { 지정된 위치로 이동 }
void stop() { 정지 }
void load() { 선택된 대상을 타게함 }
void unload() { 선택된 대상을 내리게함 }
}
// 공통부분을 Unit 클래스로 정의한다
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 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[] group = new Unit[3];
group[0] = new Marine();
group[1] = new Tank();
group[2] = new Dropship();
for(int i=0; i<group.length; i++)
group[i].move(100,200);
- 추상화된 코드는 구체화된 코드보다 변경에 유리합니다.
GregorianCalendar cal = new GregorianCalendar(); // 구체적
Calendar cal = Calendar.getInstance(); // 추상적
하나의 부품을 만드는것이고 실행 한다고 해서 추상클래스 코드가 실행하는것은
아니지만 다른 실제 사용하는 코드들을 쉽게 작성을 할수가 있기에 연습을 해놓으면
보안적으로나,코드적으로나 아주 좋은 성능입니다. 인터페이스로는 해결 할수 없을때 사용합니다. ( 고급기술)