[상속-13] 다운캐스팅

seratpfk·2022년 8월 2일
0

JAVA

목록 보기
64/96

다운캐스팅

  • 업캐스팅 된 서브클래스 객체를 다시 서브클래스 타입으로 변환하는 것
  • 강제로 타입을 변환하는 casting 방식으로 처리해야 함
  • 업캐스팅의 문제를 해결하기 위한 또 다른 방법

Person 클래스

public class Person {
	public void eat() {
		System.out.println("먹는다.");
	}
}

Student 클래스

public class Student extends Person {
	public void study() {
		System.out.println("공부한다.");
	}
}

Alba 클래스

public class Alba extends Student {
	public void work() {
		System.out.println("일한다.");
	}
}

instanceof 연산자

  • 특정 인스턴스가 어떤 클래스타입인지 점검하는 연산자
  • 해당 클래스타입이면 true 반환, 아니면 false 반환

Main 클래스

Person p = new Alba(); // 업캐스팅
System.out.println(p instanceof Person);  // true
System.out.println(p instanceof Student);  // true
System.out.println(p instanceof Alba);  // true
		if(p instanceof Student) {
			((Student) p).study();  // 다운캐스팅
		}
        // p가 Student타입의 인스턴스이면 study() 메소드를 호출할 수 있다.
        if(p instanceof Alba) {
			((Alba) p).work();
		}
        // p가 Alba타입의 인스턴스이면 work() 메소드를 호출할 수 있다.

출력:
true
true
true
공부한다.
일한다.

0개의 댓글