본문 바로가기
JAVA

JAVA 9일차

by teg0 2025. 8. 18.

UpCating

자식타입을 부모타입으로 형변환

자동형변환

ex) Car c = new Sonata();

DownCating

부모타입을 자식타입으로 형변환

강제형변환, 업캐스팅 관계에 있을 때만 가능

ex) ((Sonata)c).moveSonata();

 

1. 부모타입의 레퍼런스(참조변수)로 부모객체를 다루는 경우


		Car c1 = new Car("빨간색", "가솔린", 2021);
		c1.drive();
//		((Sonata)c1).moveSonata(); Car는 부모 클래스이기 때문

 

2. 자식타입 레퍼런스(참조변수) 자식객체를 다루는 경우

		Avante c2 = new Avante("흰색", "LPG", 2022);
		c2.drive(); //Avante 클래스에서 오버라이딩된 drive()호출
		c2.moveAvante();
		//부모참조변수로 업캐스팅 가능 -> 오버라이딩된 생성된 메모리를 기준으로 호출됨
		((Car)c2).drive();
//		((Car)c2).moveAvante(); 업캐스팅시 자식요소의 메모리 접근이 불가

 

3. 부모타입 레퍼런스(참조변수)로 자식객체를 다루는 경우(업캐스팅)

		Car c3 = new Sonata("검정", "디젤", 2023);
//		c3.moveSonata(); 부모타입의 참조변수이기 때문에 자식요소의 메서드 접근 불가
		((Sonata)c3).moveSonata();

Instanceof

//매개변수에 부모타입 참조변수를 사용하면 모든 자식타입을 받을 수 있음
public void driveCar(Car car) {
    //매개변수로 넘어온 car가 실제 메모리 공간에 Avante를 구현하고 있어야 moveAvante() 사용가능
    if(car instanceof Avante) {
        ((Avante)car).moveAvante();
    }
}

 

'JAVA' 카테고리의 다른 글

JAVA 12일차  (3) 2025.08.21
JAVA 11일차  (0) 2025.08.20
JAVA 8일차  (3) 2025.08.14
JAVA 7일차  (3) 2025.08.13
JAVA 6일차  (3) 2025.08.12