Java 기초 (22) 다운캐스팅, instanceof

코린이서현이·2023년 7월 25일
0

Java

목록 보기
22/46

🤔다운캐스팅🤔

상위클래스로 업캐스팅을 한 경우에는 메소드가 오버라이딩된 경우를 제외하면,
생성된 인스턴스의 멤버변수나 메소드를 사용할 수 없게 된다. 
생성된 인스턴스의 멤버변수나 메소드를 사용해야할 때 다운캐스팅을 사용할 수 있다.

📕 다운캐스팅

  • 명시적 형변환을 사용해 업캐스팅한 객체를 다시 원래 인스턴스자료형으로 되돌아가게 하는 것이다.

📒 다운캐스팅 방법 1. 변수에 저장하기

	//하위클래스 새로운이름 = (하위클래스) 다운캐스팅하고 싶은 업캐스팅된 인스턴스;
	Zealot unit_down = (Zealot) unit_up;
	
    //unit_down는 원래 인스턴스의 맴버변수나 메소드를 사용할 수 있게 된다.
    unit_down.attack();   

📒 다운캐스팅 방법 2. 변수에 저장하지 않고 메소드나 멤버변수를 바로 실행

    ((Zealot) unit_up).attack();   

⚠️ 주의할 점
다운캐스팅은 업캐스팅한 인스턴스만 가능하고 원래의 인스턴스 자료형이 아닌 다른 자료형으로 형변환을 할 경우 실행오류가 발생할 수 있다. 따라서 인스턴스의 원래 자료형을 확인하는 연산자 instanceof를 사용한다.

📖 instanceof

  • 형변환된 원래의 자료형을 확인하는 연산자이다.
    반환타입이 booleand이라 if문으로 쓰인다.
    (클래스타입에만 사용이 가능하다. int같은 기본자료형은 사용할 수 없다.)
	Parent toby = new Child()
    
    if (toby instanceof Child) {
      Child toby_C = (Child) toby;				 
 	}

🤔마무리하면서🤔

🏃달리기나 해야지🏃
profile
24년도까지 프로젝트 두개를 마치고 25년에는 개발 팀장을 할 수 있는 실력이 되자!

0개의 댓글