1. 추상클래스(abstract class)

- 클래스를 설계도에 비유하면, 추상클래스는 미완성 설계도에 비유한다.

- 추상메서드(미완성 메서드)를 포함하고 있는 클래스이다.

- 일반메서드가 추상메서드를 호출할 수 있다. (호출시 선언부가 필요하다)

- 추상클래스로 인스턴스는 생성할 수 없다.

- 상속을 통해서 자손클래스에 의해서만 완성될 수 있다.

- 다른 클래스를 작성하는데 도움을 줄 목적으로 작성된다.


2. 추상메서드(abstract method)

- 선언부만 작성하고 구현부(몸통, body)가 없는 메서드

- 선언부 작성후에 주석을 어떤 기능을 수행할 목적으로 작성되었는지 덧붙인다.

- 꼭 필요한 메서드이지만, 자손마다 다르게 구현될 것으로 예상되는 경우에 사용한다.

- 추상클래스를 상속받는 자손클래스에서 추상메서드의 구현부를 완성해야 한다.


3. 추상클래스의 작성

- 여러 클래스에 공통적으로 사용될 수 있는 추상클래스를 바로 작성하거나 기존 클래스의 공통 부분을 뽑아서 추상클래스를 만든다.

// 기본의 클래스, 추상클래스 만들기 전

class Marine { 	
	int x, y; // 현재 위치
	
	void move(int x, int y) {
	} // move : 지정된 위치로 이동
	
	void stop() {
	} // stop : 현재 위치에 정지
	
	void stimPack() {
	} // stimPack : 스팀팩 사용
	
} // Marine : 마린

class Tank {
	int x, y; // 현재 위치
	
	void move(int x, int y) {
	} // move : 지정된 위치로 이동
	
	void stop() {
	} // stop : 현재 위치에 정지
	
	void mode() {
	} // mode : 모드 변경
} // Tank : 시즈탱크

class Dropship {
	int x, y; // 현재 위치
	
	void move(int x, int y) {
	} // move : 지정된 위치로 이동
	
	void stop() {
	} // stop : 현재 위치에 정지
	
	void load() {
	} // load : 선택 대상을 태운다
	
	void unload() {
	} // load : 선택 대상을 내린다
} // Dropship : 수송선


// 추상 클래스, 추상클래스 만든 후

abstract class Unit {
	int x, y;
	abstract void move(int x, int y);
	void stop(){
	} // stop : 현재 위치에 정지
} // Unit

class Marine extends Unit { 	
	void move(int x, int y) {
	} // move : 지정된 위치로 이동
	
	void stimPack() {
	} // stimPack : 스팀팩 사용
} // Marine : 마린

class Tank extends Unit {
	void move(int x, int y) {
	} // move : 지정된 위치로 이동
	
	void mode() {
	} // mode : 모드 변경
} // Tank : 시즈탱크

class Dropship extends Unit {
	void move(int x, int y) {
	} // move : 지정된 위치로 이동
	
	void load() {
	} // load : 선택 대상을 태운다
	
	void unload() {
	} // load : 선택 대상을 내린다
} // Dropship : 수송선

+ Recent posts