JAVA Programming/JAVA 문제
[42] 템플릿 메소드문제( ArrayList, 템플릿메소드 run() , 추상클래스)
꾸준히개발하자
2020. 7. 16. 12:10
package cartest;
public abstract class Car {
public abstract void start();
public abstract void drive();
public abstract void stop();
public abstract void turnoff();
final public void run() { // 템플릿 메소드
start();
drive();
stop();
turnoff();
}
}
추상메소드를 가지는 추상 클래스를 생성합니다.
final 로 지정된 템플릿메소드 run() 를 생성합니다. - 로직순서를 구현
package cartest;
public class Sonata extends Car {
@Override
public void start() {
System.out.println(" Sonata 시동을 킵니다.");
}
@Override
public void drive() {
System.out.println(" Sonata 달립니다.");
}
@Override
public void stop() {
System.out.println(" Sonata 멈춤니다.");
}
@Override
public void turnoff() {
System.out.println(" Sonata 시동을 끕니다.");
}
}
package cartest;
public class Avante extends Car {
@Override
public void start() {
System.out.println("Avante 시동을 킵니다.");
}
@Override
public void drive() {
System.out.println(" Avante 달립니다.");
}
@Override
public void stop() {
System.out.println(" Avante 멈춤니다.");
}
@Override
public void turnoff() {
System.out.println(" Avante 시동을 끕니다.");
}
}
package cartest;
public class Grandeur extends Car {
@Override
public void start() {
System.out.println(" Grandeur 시동을 킵니다.");
}
@Override
public void drive() {
System.out.println(" Grandeur 달립니다.");
}
@Override
public void stop() {
System.out.println(" Grandeur 멈춤니다.");
}
@Override
public void turnoff() {
System.out.println(" Grandeur 시동을 끕니다.");
}
}
package cartest;
public class Genesis extends Car {
@Override
public void start() {
System.out.println("Genesis 시동을 킵니다.");
}
@Override
public void drive() {
System.out.println(" Genesis 달립니다.");
}
@Override
public void stop() {
System.out.println("Genesis 멈춤니다.");
}
@Override
public void turnoff() {
System.out.println("Genesis 시동을 끕니다.");
}
}
이제 ArrayList 에 Car 객체를 선언하고 carList를 만듭니다
각각의 객체를 new를 통해 add 추가 합니다.
for hanced for 문을 사용하여 배열명인 carList에 run()을 실행해
템플릿 메소드 의 순서대로 메소드들을 실행 합니다.
package cartest;
import java.util.ArrayList;
public class CarTest {
public static void main(String[] args) {
ArrayList<Car> carList = new ArrayList<Car>();
carList.add(new Sonata());
carList.add(new Avante());
carList.add(new Grandeur());
carList.add(new Genesis());
for(Car car : carList ) {
car.run();
System.out.println("=================");
}
}
}