1. 추상 클래스(abstract class)
- 미완성 설계도
- 미완성 메서드인 추상 메서드를 갖고 있는 클래스
- 다른 클래스 작성에 도움을 주기 위한 클래스
- 상속을 통해 추상 메서드를 완성해야 인스턴스 생성 가능 👉🏻 상속을 통해 추상 메서드를 구현하고 인스턴스 생성
2. 추상 메서드(abstract method)
- 구현부인 몸통{}이 없는 미완성 메서드
- 몸통이 없는대신 abstract가 앞에 붙음
abstract 반환형 메서드명();
- 꼭 필요하지만 자손마다 다르게 구현될 것으로 예상될 경우 사용
- 추상 클래스를 상속 받아 추상 메서드를 구현하는데, 추상 클래스에 있는 모든 메서드를 구현할 수도 있고 일부 메서드만 구현할 수도 있음
- 추상 메서드 호출 가능(호출 시 선언부만 필요)
/**
* 추상 클래스 Player
*/
abstract class Player {
boolean pause; // 일시정지 상태를 저장하기 위한 변수
int currentPos; // 플레이 중인 위치를 저장하기 위한 변수
Player() { // 추상 클래스도 생성자가 있어야
pause = false;
currentPos = 0;
}
abstract void play(int pos); // 추상 메서드 play(int post), 지정된 위치에서 재생하는 기능이 수행되도록 구현해야함
abstract void stop(); // 추상 메서드 stop(), 재생을 멈추는 기능이 수행되도록 구현해야함
void play() {
play(currentPos); // 추상메서드 사용 가능
}
}
/**
* 추상 클래스 Player를 상속받은 AudioPlayer
*/
class AudioPlayer extends Player {
void play(int post) { // 추상 메서드 play(int post) 구현
// ...
}
void stop() { // 추상 메서드 stop() 구현
// ...
}
}
/**
* 추상 클래스 Player를 상속받았지만 추상 메서드 play(int post) 구현하지 않았기 때문에 추상 클래스 AbstractPlayer
*
*/
abstract class AbstractPlayer extends Player {
void play(int post) {
// ...
}
}
3. 추상화 이해하기
1) 추상(抽象): 여러 가지 사물이나 개념에서 공통되는 특성이나 속성 따위를 추출하여 파악하는 작용
2) 구체(具體): 사물이 직접 경험하거나 지각할 수 있도록 일정한 형태와 성질을 갖춤
👉🏻 추상화는 공통적인 특성과 속성을 뽑은 것!
장미, 해바라기, 안개꽃, 프리지아, 백합 등의 여러 꽃 종류가 있는데 이것들을 다 꽃이라고 부르는 것처럼
향기가 나고, 나비와 벌이 꿀을 먹고, 꽃 가루를 날리고 등의 공통 속성을 뽑아서 꽃이라고 하는 것이 추상화
각각의 꽃은 색이 다르고, 자라나는 환경이 다르고, 잎의 종류가 다르고 그런 개별적인 속성이 구체화
'Java' 카테고리의 다른 글
Java default 메서드와 static 메서드 (0) | 2022.12.29 |
---|---|
Java 인터페이스(interface) (0) | 2022.12.28 |
Java 매개변수의 다형성 (0) | 2022.12.27 |
Java 참조변수의 형변환과 instanceof (0) | 2022.12.27 |
Java 다형성(polymorphism) (0) | 2022.12.26 |