Java/Excercise

inheritance ch04 FruitTest

낭구리 2021. 8. 27. 17:57
package ch04;

public class FruitTest {

	public static void main(String[] args) {

		Peach peach = new Peach();
		Banana banana = new Banana();

		peach.showInfo();
		banana.showInfo();

		// 다형성 - 클래스를 다양한 형태로 바라본다. (배)
		// 하나의 코드가 여러 자료형으로 구현되어 실행되는것
		// 같은 코드에서 여러 다른 실행 결과가 나올수도 있다.
		// 정보은닉, 상속과 더불어 객체지향프로그래밍의 가장 큰 특징 중 하나임
		// 다형성을 잘 활용하면 코드를 유연하고 확장성 있고 유지보수가 편리한 프로그램을 만들 수 있습니다.

		System.out.println("------");
		// 하나의 변수에 여러개의 연관된 데이터 자료형을 담는다.
		Fruit[] basket = new Fruit[4];
		basket[0] = new Banana();
		basket[1] = new Peach();
		basket[2] = new Banana();
		basket[3] = new Peach();

		// 코딩 시점 - 컴파일 타임 (타입까지만 확인 가능)
		// 런 타임 시점 - 프로그램 실행시 동작 시점
		// .연산자를 사용하게 되면 객체의 타입까지만 확인 가능합니다.
		// origin 멤버변수에 접근하기 위해서는 다운캐스팅을 해야한다.

		String temp = ((Banana) basket[0]).origin;
		// Banana라는 클래스로 형변환을 시킨다.
		System.out.println("원산지 :" + temp);
		// instanceof 연산자 fruit에 들어있는 데이터타입을 확인한다.
		if (basket[0] instanceof Banana) {
			System.out.println("바나나 타입입니다.");
		} else {
			System.out.println("복숭아입니다.");
		}
		if (basket[1] instanceof Peach) {
			System.out.println("복숭아 타입입니다.");
		}

		// 문제 1. for문을 사용해서 바나나 타입일 경우 화면에 origin변수를 출력해보세요.
		for (int i = 0; i < basket.length; i++) {
			basket[i].showInfo();
			if (basket[i] instanceof Banana) {
				String origin = ((Banana) basket[i]).origin;
				System.out.println("원산지 : " + origin);
				// 만약 바나나 타입이면 화면에 원산지를 출력하세요
			}
		}
	}

}

'Java > Excercise' 카테고리의 다른 글

abstract ch02 Computer  (0) 2021.08.30
abstract ch01 Animal  (0) 2021.08.30
inheritance ch04 Fruit  (0) 2021.08.27
inheritance ch03 Person Student Teacher  (0) 2021.08.27
inheritance ch02 Hero  (0) 2021.08.27