추상클래스 (abstract class)
- 추상 메서드를 포함한 클래스
- 추상 메서드는 구현코드 없이 메서드의 선언만 있다.
abstact int add(int x, int y);
- abstract 예약어 사용
- 추상 클래스는 new (인스턴스화) 할 수 없음
- 추상 메서드가 없다고 해도 추상 클래스가 될 수 있다.
추상 클래스와 템플릿 메서드
템플릿 메서드
- 추상 메서드나 구현된 메서드를 활용하여 전체 기능의 흐름 (시나리오)를 정의하는 메서드
- final 로 선언하면 하위 클래스에서 재정의 할 수 없음
- 프레임워크에서 많이 사용되는 설계 패턴
- 추상 클래스로 선언된 상위 클래스에 템플릿 메서드를 활용하여 전체적인 흐름을 정의하고 하위 클래스에서 다르게 구현되어야 하는 부분은 추상 메서드로 선언하여 하위 클래스가 구현하도록 함
final 예약어
- final 변수는 값이 변경될 수 없는 상수
- final 변수는 오직 한 번만 값을 할당할 수 있음
- final 메서드는 하위클래스에서 재정의 (overriding)할 수 없음
- final 클래스는 더 이상 상속되지 않음