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("=================");
}
}
}
'JAVA Programming > JAVA 문제' 카테고리의 다른 글
[49] 코딩해보세요 , 인터페이스로 정렬 알고리즘 구현하기 (0) | 2020.07.17 |
---|---|
[46] 자바 인터페이스 요소들 , 여러개 상속 (0) | 2020.07.17 |
[38] 코딩해보세요 (상속,오버라이딩,업캐스팅,ArrayList 활용) (0) | 2020.07.16 |
[31] ArrayList 활용 문제 (0) | 2020.07.15 |
[30] ArrayList 을 이용하여 학생의 수강과목 학점 출력하기 ( 직접 만들어보기) (0) | 2020.07.15 |