본문 바로가기
JAVA/객체지향

추상 클래스

by chogigang 2023. 2. 23.

미완성 설계도 입니다.

 

단지 미완성 클래스입니다.

 

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(); // 추상적
 

하나의 부품을 만드는것이고 실행 한다고 해서 추상클래스 코드가 실행하는것은 

아니지만 다른 실제 사용하는 코드들을 쉽게 작성을 할수가 있기에 연습을 해놓으면

보안적으로나,코드적으로나 아주 좋은 성능입니다.   인터페이스로는 해결 할수 없을때 사용합니다.  ( 고급기술)

'JAVA > 객체지향' 카테고리의 다른 글

내부 클래스  (0) 2023.02.23
인터페이스  (0) 2023.02.23
다형성  (0) 2023.02.23
제어자  (0) 2023.02.23
Package와 import  (0) 2023.02.23