참조 변수의 형변환(2)

essential·2023년 8월 4일

객체 지향

목록 보기
28/40

참조 변수의 형변환(2)

예제

EX7_7

class Ex7_7 {
	public static void main(String args[]) {
		Car car = null;
		FireEngine fe = new FireEngine();
		FireEngine fe2 = null; 
//		FireEngine fe2 = (FireEngine)car; 조상 -> 자손으로 형변환
//    Car car2 = (Car)fe2; 자손 -> 조상으로 형변환
//    car2.drive(); fe = null 인경우 NullPointException 발생 
		fe.water();
		car = fe;    // car = (Car)fe;에서 형변환이 생략됨
		car.water(); //에러. Car타입의 참조변수인 car로는 warter()를 사용 불가
		fe2 = (FireEngine)car; // 자손타입 ← 조상타입. 형변환 생략 불가
		fe2.water();
	}
}

class Car {
	String color;
	int door;

	void drive() { 	// 운전하는 기능
		System.out.println("drive, Brrrr~");
	}

	void stop() {  	// 멈추는 기능	
		System.out.println("stop!!!");	
	}
}

class FireEngine extends Car {	// 소방차
	void water() {	// 물을 뿌리는 기능
		System.out.println("water!!!");
	}
}

//실행 시 warter!! 나옴
  • 실제 인스턴스의 개수를 확인하기
profile
essential

0개의 댓글