티스토리 뷰

반응형

package practice;

public class Genensis  extends Car{

	@Override
	public void turnOn() {
		System.out.println("Genensis 시동을 켭니다.");
		
	}

	@Override
	public void run() {
		System.out.println("Genensis 달립니다.");
		
	}

	@Override
	public void stop() {
		System.out.println("Genensis 멈춥니다.");		
	}

	@Override
	public void turnOff() {
		System.out.println("Genensis 시동을 끕니다.");
		
	}

}
package template;


public class AdvancedLevel extends PlayerLevel {

	@Override
	public void run() {
		System.out.println("빨리 달린다.");
	}

	@Override
	public void jump() {
		System.out.println("높게 jump ");
	}

	@Override
	public void turn() {
		System.out.println("못돔");	}

	@Override
	public void showLevelMessage() {
		System.out.println("-------------중급 레벨------------");
	}

}
package template;

public class BeginnerLevel extends PlayerLevel {

	@Override
	public void run() {
		System.out.println("천천히 달린다.");
	}

	@Override
	public void jump() {
		System.out.println("jump 모름");
	}

	@Override
	public void turn() {
		System.out.println("못돔");	}

	@Override
	public void showLevelMessage() {
		System.out.println("-------------초급 레벨------------");
	}

}
package template;

public abstract  class PlayerLevel {
	public abstract void run();

	public abstract void jump();

	public abstract void turn();

	public abstract void showLevelMessage();

	final public void go(int count) {
		run();
		for (int i = 0; i < count; i++) {
			jump();
		}
		turn();
	}
}
package template;

public class SuperLevel extends PlayerLevel {

	@Override
	public void run() {
		System.out.println("아주빨리 달린다.");
	}

	@Override
	public void jump() {
		System.out.println("아주높게 jump ");
	}

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

	@Override
	public void showLevelMessage() {
		System.out.println("-------------고급 레벨------------");
	}
/*
 * -------------초급 레벨------------
천천히 달린다.
jump 모름
못돔
-------------중급 레벨------------
빨리 달린다.
높게 jump 
높게 jump 
못돔
-------------고급 레벨------------
아주빨리 달린다.
아주높게 jump 
아주높게 jump 
아주높게 jump 
 turn turn
 */
}

35. 템플릿 메서드 활용하기

 

 

 

36. 코딩해 보세요

 

package practice;

import java.util.ArrayList;

public class CarTest {

	public static void main(String[] args) {

		ArrayList<Car> carList = new ArrayList<Car>();
		carList.add(new Genensis());
		carList.add(new Sonata());
		carList.add(new Avante());
		carList.add(new Grandeur());
		for (Car car : carList) {
			car.go();
			System.out.println("----------------");
		}
		/*
		 * Genensis 시동을 켭니다. Genensis 달립니다. Genensis 멈춥니다. Genensis 시동을 끕니다.
		 * ---------------- Sonata 시동을 켭니다. Sonata 달립니다. Sonata 멈춥니다. Sonata 시동을 끕니다.
		 * ---------------- Avante시동을 켭니다. Avante달립니다. Avante멈춥니다. Avante시동을 끕니다.
		 * ---------------- Grandeur 시동을 켭니다. Grandeur 달립니다. Grandeur 멈춥니다. Grandeur 시동을
		 * 끕니다. ----------------
		 * 
		 */

	}

}
package practice;


public class  Avante  extends Car{

	@Override
	public void turnOn() {
		System.out.println("Avante시동을 켭니다.");
		
	}

	@Override
	public void run() {
		System.out.println("Avante달립니다.");
		
	}

	@Override
	public void stop() {
		System.out.println("Avante멈춥니다.");		
	}

	@Override
	public void turnOff() {
		System.out.println("Avante시동을 끕니다.");
		
	}

}
package practice;

public abstract class Car {

	public abstract void turnOn();

	public abstract void run();

	public abstract void stop();

	public abstract void turnOff();

	final public void go() {
		turnOn();
		run();
		stop();
		turnOff();
	}

}
반응형
댓글
반응형
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
«   2024/12   »
1 2 3 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
글 보관함