추상 클래스
추상 클래스란?
- 추상 메서드를 포함한 클래스
- 추상 메서드 : 구현 코드가 없이 선언부만 있는 메서드
- abstract 예약어 사용
추상 클래스는 new(인스턴스화) 할 수 없음
추상 클래스 구현
public abstract class Computer {
public abstract void display();
public abstract voud typing();
}
- 메서드와 클래스에 abstract 키워드 사용
- 추상 메서드가 포함된 클래스는 추상 클래스로 선언
- 모든 메서드가 구현되었다고 해도 클래스에 abstract 키워드를 사용하면 추상 클래스
추상 클래스 사용하기
- 추상 클래스는 주로 상속의 상위클래스로 사용됨
- 추상 메서드 : 하위 클래스가 구현해야 하는 메서드
- 구현된 메서드 : 하위 클래스가 공통으로 사용하는 기능의 메서드
템플릿 메서드
- 템플릿: 틀이나 견본을 의미
- 템플릿 메서드: 추상 메서드나 구현된 메서드를 활용하여 전체의 흐름(시나리오)를 정의 해 놓은 메서드
final로 선언하여 재정의 할 수 없게 함
- 템플릿 메서드 패턴
- 디자인 패턴의 일종
- 프레임 워크에서 많이 사용되는 설계 패턴
- 추상 클래스로 선언된 상의 클래스에서 추상 메서드를 이용하여 전체 구현의 흐름을 정의하고 구체적인 각 메서드 구현은 하위 클래스에 위임함
- 하위 클래스가 다른 구현을 했다고 해서 템플릿 메서드에 정의된 시나리오 대로 수행됨
템플릿 메서드 구현 예제
public abstract class Car {
public abstract void drive();
public abstract void stop();
public void startCar() {
System.out.println("시동을 켭니다");
}
public void turnoff() {
System.out.println("시동을 끕니다.");
}
/* 템플릿 메서드 */
final public void run() {
startCar();
drive();
stop();
turnoff();
}
}
final 예약어
- final 변수는 값이 변경될 수 없는 상수임
- 오직 한번만 값을 할당할 수 있음
- final 메서드는 하위 클래스에서 재정의 할 수 없음
- final 클래스는 더 이상 상속되지 않음