추상 클래스
메서드의 본체가 완성되지 않은 미완성 메서드
메서드의 기능을 정의하는 중괄호 안이 비어 있다는 것이 아니라 중괄호 자체가 없음
예. abstract void 함수명();
추상 메서드를 1개 이상 포함하고 있는 클래스는 반드시 추상 클래스로 정의되어야 함
예.
abstract class 클래스명 {
abstract void 함수명();
void 함수명() {
...
}
}
추상 클래스의 특징
객체를 직접 생성할 수 없음
-> 힙 메모리에 생성되는 객체는 내부 요소가 미완성된 상태로 들어갈 수 없기 때문추상 클래스를 상속한 자식 클래스를 생성하면 그 자식 클래스로는 객체를 생성할 수 있음
추상 클래스를 상속하는 자식 클래스는 부모에게 상속받은 추상 메서드(미완성 메서드)를 반드시 완성 = 오버라이딩 해야 함.
오버라이딩 Overriding - 부모에게 상속받은 메서드를 자식 클래스에서 재정의하는 것
구현 implements - 부모에게 물려받은 미완성 메서드를 자식 클래스에서 완성하는 것
추상 클래스 타입의 객체 생성 방법
1. 추상 클래스를 상속한 일반 클래스를 생성
객체를 여러 개 만들어야 하는 상황: 자식 클래스를 직접 정의하는 것이 적절
2. 익명 이너 클래스를 사용
한 번만 사용할 객체일 때 유리
추가로 자식 클래스를 정의하지 않아도 됨
코드가 간결함
