본문 바로가기
언어(Language)/Java

[Java] 형변환(업캐스팅), 다운캐스팅

by 올리브영 2023. 2. 24.
728x90
반응형

형변환(업캐스팅)


  • 상위 클래스로 변수를 선언하고 하위 클래스의 생성자로 인스턴스를 생성
  • 상위 클래스 타입의 변수에 하위 클래스 변수가 대입
  • 하위 클래스는 상위 클래스의 타입을 내포하고 있으므로 상위 클래스로의 묵시적 형변환이 가능하다.
  • 상속 관계에서 모든 하위 클래스는 상위 클래스로 형 변환이 된다.(그 역은 성립하지 않음)
class 오리{

}
class 흰오리 extends 오리{

}
public class Main {
    public static void main(String[] args){
        오리 오리a = new 흰오리();
    }
}
  • 흰오리 생성자에 의해 흰오리 클래스의 모든 멤버 변수에 대한 메모리는 생성되었지만 변수의 타입이 오리이므로 실제 접근 가능한 변수나 메서드는 오리클래스의 변수와 메서드이다.

 

다운캐스팅


  • 업캐스팅된 클래스를 다시 원래의 타입으로 형 변환
  • 하위 클래스로의 형 변환은 명시적으로 해야한다.
오리 오리a = new 흰오리();      // 묵시적
흰오리 읜오리a = (흰오리)오리a;  // 명시적
728x90
반응형

'언어(Language) > Java' 카테고리의 다른 글

[Java] 인터페이스(interface)  (0) 2023.02.28
[Java] 추상 클래스(abstract class)  (0) 2023.02.28
[Java] 상속(Inheritance)과 다형성(polymorphism)  (0) 2023.02.24
[Java] 배열(Array)  (0) 2023.02.24
[Java] 반복문(while, for)  (0) 2023.02.24