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 : 수송선
'Java > Java SE' 카테고리의 다른 글
Java 예외처리(exception handling) (1) | 2013.08.08 |
---|---|
Java 인터페이스(interface) (2) | 2013.08.07 |
Java 다형성(polymorphism), instanceof 연산자 (0) | 2013.08.07 |
Java 제어자(modifier), 접근 제어자(access modifier) (0) | 2013.08.06 |
Java super, super() (0) | 2013.08.06 |