상위 클래스에서 알고리즘의 뼈대를 정의하고 하위 클래스에서 그 뼈대의 세부 사항을 구현하는 방식
1. 주요 개념
- 알고리즘의 뼈대를 정의하는 메서드입니다.
- 템플릿 메서드(Template Method)
- 일반적으로 상위 클래스에서 정의되며, 알고리즘의 각 단계는 하위 클래스에서 구현됩니다.
- 추상 메서드(Abstract Methods)
- 하위 클래스에서 반드시 구현해야 하는 메서드들입니다.
2. 소스 코드 예시
public interface TeacherAble {
// public abstract 생략
void 수업하기();
}
public abstract class Teacher implements TeacherAble {
protected void 입장하기() {
System.out.println("입장하기");
}
protected void 출석부르기() {
System.out.println("출석부르기");
}
protected void 퇴장하기() {
System.out.println("퇴장하기");
}
protected abstract void 강의하기();
public void 수업하기() {
입장하기();
출석부르기();
강의하기();
퇴장하기();
}
}
public class JavaTeacher extends Teacher {
@Override
protected void 강의하기() {
System.out.println("자바 강의하기");
}
}
public class PythonTeacher extends Teacher {
@Override
protected void 강의하기() {
System.out.println("파이썬 강의하기");
}
}
public class HTMLTeacher extends Teacher {
@Override
protected void 강의하기() {
System.out.println("HTML 강의하기");
}
}
// main
public class App {
public static void main(String[] args) {
JavaTeacher t1 = new JavaTeacher();
t1.수업하기();
PythonTeacher t2 = new PythonTeacher();
t2.수업하기();
HTMLTeacher t3 = new HTMLTeacher();
t3.수업하기();
}
}
- TeacherAble 인터페이스
- 인터페이스를 선언할 때 메서드들은 자동으로 public과 abstract 키워드를 가집니다.
- Teacher 클래스
- 템플릿 메서드를 포함
- public void 수업하기() 메서드는 인터페이스에서 내려온 메서드 이므로 무조건 public이어야 한다. (protected 사용 불가)
- JavaTeacher, PythonTeacher, HTMLTeacher
- Teacher 클래스를 상속하고 있습니다.
- Teacher 클래스에 정의된 추상메서드 강의하기() 는 반드시 오버라이드해야 합니다.
Share article