자동차 주행과정 구현하기
Car 추상 클래스를 상속받는 Sonata, Avate, Gradeur, Genesis 클래스가 있습니다. 각 차는 주행하기 위해 다음 메서드의 순서로 움직입니다.
run(){
start();
drive();
stop();
turnoff();
}
run() 메서드를 템플릿 메서드로 구현하고 CarTest 클래스를 ArrayList를 활용하여 다형성이 구현되게 작성하시오
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();
System.out.println("=================");
}
}
- Car 클래스를 작성하고 공통된 메서드인 start(),drive(),stop(),turnoff();를 추상메서드로 구현하고 클래에도 abstract를 선언해줍니다.
- run()메서드를 Car 클래스의 메서드들의 기능하는 순서를 조직하는 템플릿 메서드로 작성합니다.
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 시동을끕니다.");
}
}
- Sonata 클래스를 하부 클래스로 작성하고 추상 메서드들에 출력문을 작성합니다.
- 나머지 3개의 하부 클래스도 이름을 바꾸 똑같이 작성합니다.(생략)
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 Grandeur());
carList.add(new Avante());
carList.add(new Genesis());
for(Car car : carList) {
car.run();
}
}
}
- CarTest 클래스를 작성하고 Car를 자료형으로 하는 ArryList를 만들어 add메소드를 통해 하부 클래스들을 new하여 배열에 담습니다.
- 향상된 for문을 사용하여 배열안에 모든 인스턴스들이 run()메서드를 사용하게 합니다.
Sonata 시동을 켭니다
Sonata 달립니다
Sonata 멈춥니다.
Sonata 시동을끕니다.
=================
Grandeur 시동을 켭니다
Grandeur 달립니다
Grandeur 멈춥니다.
Grandeur 시동을끕니다.
=================
Avante 시동을 켭니다
Avante 달립니다
Avante 멈춥니다.
Avante 시동을끕니다.
=================
Genesis 시동을 켭니다
Genesis 달립니다
Genesis 멈춥니다.
Genesis 시동을끕니다.
=================
'Java' 카테고리의 다른 글
[Java] 인터페이스 - 인터페이스를 활용한 다형성 구현 (0) | 2020.07.21 |
---|---|
[Java] 인터페이스 - 인터페이스란? (0) | 2020.07.21 |
[Java] 추상 클래스 - 템플릿 메서드 활용하기 (0) | 2020.07.17 |
[Java] 추상 클래스 - 추상클래스의 응용 템플릿 메서드 (0) | 2020.07.17 |
[Java] 추상 클래스 - 추상 클래스란? (0) | 2020.07.17 |