본문 바로가기
Language/JAVA

[JAVA]업캐스팅(upcasting)

by 바까 2020. 6. 22.
반응형

[참고] - 클래스형과 클래스의 자료형, 인스턴스형, 인스턴스의 자료형은 모두 비슷한 의미로 사용하는 용어


상위클래스로 암묵적(묵시적) 클래스 형 변환

개념 면에서 보면 상위 클래스가 하위 클래스보다 일반적인 개념이고, 기능 면에서 보면 하위 클래스가 상위 클래스보다 기능이 많다.

👉상속받은 클래스는 상위 클래스 기능을 모두 사용할 수 있고 추가로 더 많은 기능을 구현하기 때문. 

하위클래스는 하위클래스형이면서 동시에 상위클래스 형이기도 하다.

즉, 하위클래스로 인스턴스를 생성 할 때 이 인스턴스의 자료형을 상위클래스형으로 클래스 형변환하여 선언할 수 있다. 

👉하위클래스는 상위클래스를 상속 받았기 때문. 즉, 하위클래스에 상위클래스가 포함 된 것. 

참조변수를 찍어보면 Customer(상위클래스)밖에 보이지 않는다.

반대로 상위클래스로 인스턴스를 생성할 때 하위클래스형으로 선언할 수 있을까?

👉그렇지않다. 상위클래스가 하위클래스의 기능을 다 가지고있는 것은 아니기 때문이다.

모든 하위 클래스는 상위 클래스 자료형으로 형 변환 될 수 있지만, 그 역은 성립하지 않는다.

 

정리)

1. 상위 클래스 형으로 변수를 선언하고 하위 클래스 인스턴스를 생성할 수 있다.

2. 하위 클래스는 상위 클래스의 타입을 내포하고 있으므로 상위 클래스로 묵시적 형변환이 가능하다.

3.하위클래스는 상위클래스형을 내포하고있기 때문에 상위클래스 형으로 형 변환 할수 있지만 그 역은 성립되지않는다.

 


반대로, 다운캐스팅은  이미 업캐스팅된 상태를 원상태로 돌아오게하는 것이다. 전제가 이미 업캐스팅이 된 상태에서 진행되어야 한다. 🙄🙄다음 포스팅에

반응형

댓글