Abstract class 추상 클래스
- 미완성 설계도, 미완성 메서드를 갖고 있는 클래스
abstract class Player {
abstract void play(int pos);
abstract void stop();
}
- 추상 클래스와 추상 메서드는
abstract
키워드 사용
- 다른 클래스 작성에 도움을 주기 위한 것. 인스턴스 생성 불가 ❌
class AudioPlayer extends Player {
void play(int pos) {}
void stop() {}
}
AudioPlayer ap = new AudioPlayer();
- 상속을 통해 모든 추상 메서드를 완성해야 인스턴스 생성 가능 ✅
- 추상 메서드 호출 가능 (호출할 때는 선언부만 필요)
- 해당 메서드 구현을 강제하는 효과
추상 클래스의 작성
- 여러 클래스에 공통적으로 사용될 수 있는 추상 클래스 작성
- 기존 클래스의 공통 부분을 뽑아서 추상 클래스 작성
- 의미 있는 상속 단계별로 작성
- 클래스를 쉽게 작성하고 관리 변경에 용이하고 중복이 제거된다.
추상화 (불명확) ↔ 구체화 (명확)
- 추상화된 코드는 구체화된 코드보다 유연하고 변경에 유리하다.