본문 바로가기
Java/Java

[Java] 템플릿 메서드

by 기록하는_사람 2022. 10. 15.

템플릿 메서드

📌 템플릿 메서드

: 추상 메서드나 구현된 메서드를 활용해 전체 기능의 흐름을 정의하는 메서드.

 

💡 final

- final 변수 : 값이 변경될 수 없음.(상수)

- final 메서드 : 하위 클래스에서 오버라이딩 할 수 없음.

- final 클래스 : 다른 클래스가 상속할 수 없음.

 

📄 Animal.java

package prac_template;

public abstract class Animal {
	public abstract void move();
	public abstract void birth();
	
	public void eat() {
		System.out.println("eat");
	}
	
	public void sleep() {
		System.out.println("sleep");
	}
	
	public final void life() {  // 템플릿 메서드. final : 하위 클래스에서 재정의 불가능.
		birth();
		eat();
		move();
		sleep();
	}
}

📄 Dog.java

package prac_template;

public class Dog extends Animal {
	@Override
	public void move() {
		System.out.println("run");
		
	}

	@Override
	public void birth() {
		System.out.println("breed");
	}

}

📄 Fish.java

package prac_template;

public class Fish extends Animal {
	@Override
	public void move() {
		System.out.println("swim");
	}

	@Override
	public void birth() {
		System.out.println("spawn");
	}

}

📄 AnimalTest.java

package prac_template;

public class AnimalTest {

	public static void main(String[] args) {
		Animal dog = new Dog();
		dog.life();

		System.out.println();
		Animal fish = new Fish();
		fish.life();
		
	}

}

// breed
// eat
// run
// sleep
//
// spawn
// eat
// swim
// sleep

'Java > Java' 카테고리의 다른 글

[Java] 자바의 메모리 모델  (0) 2022.10.17
[Java] 인터페이스(interface)  (1) 2022.10.15
[Java] 추상 클래스(Abstract Class)  (0) 2022.10.15
[Java] 상속  (0) 2022.10.14
[Java] ArrayList  (0) 2022.10.14

댓글