템플릿 방법
● 추상 메소드 또는 구현 메소드를 사용하여 코드 흐름(시나리오)을 정의하는 메소드
● 하위 클래스에서 재정의할 수 없도록 final로 선언합니다.
● 프레임워크에서 널리 사용되는 디자인 패턴.
● 추상 클래스로 선언된 슈퍼 클래스와 서브 클래스에서 템플릿 메소드를 이용하여 전체적인 흐름을 정의한다.
● 다르게 구현되는 부분은 추상 메소드로 선언되어 서브클래스에서 구현된다.
마지막 예약어
● 종료 변수: 값을 변경할 수 없는 상수.
공개 정적 최종 이중 PI = 3.14;
● 마지막 메서드: 하위 클래스에서 재정의할 수 없는 메서드
● End Class : 상속받을 수 없는 Class
| 하나 2 삼 4 5 6 7 8일 9 10 11 12 13 14 15 16 | 패키지 ch13; 공공의 수업 메인 테스트1 {     공공의 공전 비어 있는 주로(선() 인수) {                 아이카 아이카 = 새로운 아이카();                 aiCar.run();         체계.에서.프린트(“————“);                 수동자동 수동자동 = 새로운 수동자동차();                 manualCar.run();                 manualCar.run();         } } | CS | 
| 하나 2 삼 4 5 6 7 8일 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 | 패키지 ch13; 공공의 수업 아이카 퍼지는 자동차 {         @덮어쓰기     공공의 비어 있는 운전하다() {         체계.에서.프린트(“나는 자율주행”);         체계.에서.프린트(“자동차가 스스로 움직인다”);         }         @덮어쓰기     공공의 비어 있는 그만하다() {         체계.에서.프린트(“차가 저절로 멈춘다”);         }         @덮어쓰기     공공의 비어 있는 와이퍼 () {         체계.에서.프린트(“빗물은 직접 치우세요”);         }         @덮어쓰기     공공의 비어 있는 세차() {         체계.에서.프린트(“내 차는 내가 직접 세차한다”);         } } | CS | 
| 하나 2 삼 4 5 6 7 8일 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 | 패키지 ch13; /**   *    *    *    * @author GGG 템플릿 메서드 샘플 구현 핵심 메서드 run()   *   */ 공공의 추상적인 수업 자동차 {     보호 추상적인 비어 있는 운전하다();     보호 추상적인 비어 있는 그만하다();     사적인 비어 있는 시작자동() {         체계.에서.프린트(“엔진을 켜십시오”);         }     사적인 비어 있는 끄다() {         체계.에서.프린트(“꺼져”);         }     공공의 추상적인 비어 있는 와이퍼();     //후크 방법     공공의 비어 있는 세차() {         // 아무 것도 구현하지 않습니다 –> 일반적인 방법입니다.         }     // 실행 흐름 생성     // 재정의 불가능하게 만들기 –> 최종(메서드 이전)     // 하위 클래스에서 재정의할 수 없습니다.     결정적인 공공의 비어 있는 달리다() {                 startAuto();                 운전하다();                 와이퍼();                 그만하다();                 끄다();                 세차();         } } | CS | 
| 하나 2 삼 4 5 6 7 8일 9 10 11 12 13 14 15 16 17 18 19 20 | 패키지 ch13; 공공의 수업 수동차 퍼지는 자동차 {         @덮어쓰기     공공의 비어 있는 운전하다() {         체계.에서.프린트(“피플 드라이브”);         }         @덮어쓰기     공공의 비어 있는 그만하다() {         체계.에서.프린트(“사람들이 브레이크를 밟고 있다”);         }         @덮어쓰기     공공의 비어 있는 와이퍼 () {         체계.에서.프린트(“사람이 일하게 만든다”);         } } | CS | 
        
