[상속-15] 다운캐스팅 연습문제

seratpfk·2022년 8월 2일
0

JAVA

목록 보기
65/96

연습문제

  • Car : drive()
  • Ev : drive(), charge()
  • Hybrid : drive(), charge(), addOil()
  • Main : 임의의 자동차 10대 배열에 저장하기(33%확률로 랜덤 생성)
    car이면 drive() 호출
    Ev이면 charge() 호출
    Hybrid이면 addOIl 호출

Car클래스 생성

public class Car {
	public void drive() {
		System.out.println("달린다.");
	}
}

Ev클래스 생성

public class Ev extends Car {
	public void charge() {
		System.out.println("충전한다.");
	}
}

Hybrid클래스 생성

public class Hybrid extends Ev {
	public void addOil() {
		System.out.println("기름을 넣는다.");
	}
}

Main클래스 생성

public class Main {
	public static void main(String[] args) {
		Car[] cars = new Car[10];
		for(int i = 0; i < cars.length; i++) {
			if(Math.random() < 0.33) {
				cars[i] = new Car();
			} else if(Math.random() < 0.66) {
				cars[i] = new Ev();
			} else {
				cars[i] = new Hybrid();
			}
		}
		/*
		 Car이면 drive() 호출
		 Ev이면 charge() 호출
		 Hybrid이면 addOil() 호출
		 */
		for(int i = 0; i < cars.length; i++) {
			if(cars[i] instanceof Hybrid) {  // 후손부터 먼저 체크한다.
				((Hybrid) cars[i]).addOil();
			} else if(cars[i] instanceof Ev) {
				((Ev) cars[i]).charge();
			} else if(cars[i] instanceof Car) {
				(cars[i]).drive();
			}
		}
	}
}

출력

충전한다.
달린다.
충전한다.
기름을 넣는다.
충전한다.
기름을 넣는다.
충전한다.
달린다.
충전한다.
기름을 넣는다.

  • '충전한다, 달린다, 기름을 넣는다'가 랜덤으로 10개 생성된다.

0개의 댓글