우리는 호랑이가 동물이라는 것을 알고 있습니다. 동물 클래스가 호랑이 클래스의 부모 클래스라면 호랑이가 동물일 때 호랑이는 고유한 특성과 기능을 잃게 된다는 점에 유의해야 합니다. 인간 사고의 관점에서 볼 때, "호랑이는 동물이다"라고 말하는 것은 상향 사고 방식에 속하며 이는 자바 언어의 상향 변환 객체와 유사합니다.
Animal 클래스가 Tiger 클래스의 상위 클래스라고 가정합니다. 하위 클래스를 사용하여 객체를 만들고 이 객체의 참조를 상위 클래스의 객체에 넣을 때 다음과 같습니다.
Animala;a=newTiger();
또는
Animala;Tigerb=newTiger();a=b;
이때 객체 a를 객체 b의 상향변형 객체라고 부르는 것은 "호랑이는 동물이다"라고 말하는 것과 같습니다. 서브클래스는 상향 변환된 객체의 엔터티를 생성하는 역할을 담당하지만 상향 변환된 객체는 원래 객체의 일부 속성과 기능을 잃게 됩니다.
상향 변환 객체는 다음과 같은 특징을 가지고 있습니다.
(1) 상향 변환된 객체는 새로 추가된 하위 클래스의 멤버 변수를 연산할 수 없으며, 하위 클래스의 새로운 메서드를 호출할 수 없습니다.
(2) 상향 변환된 객체는 하위 클래스에 의해 상속되거나 숨겨진 멤버 변수에 액세스할 수 있으며, 하위 클래스에 의해 상속된 메서드 또는 하위 클래스에 의해 재정의된 인스턴스 메서드를 호출할 수도 있습니다. 업캐스트 객체는 하위 클래스가 상속한 메서드 또는 하위 클래스가 재정의한 인스턴스 메서드를 작동하며 해당 기능은 하위 클래스 객체에서 이러한 메서드를 호출하는 것과 동일합니다. 따라서 하위 클래스가 상위 클래스의 인스턴스 메서드를 재정의하는 경우 개체의 업캐스트 개체가 이 인스턴스 메서드를 호출할 때 하위 클래스에 의해 재정의된 인스턴스 메서드를 호출해야 합니다.
알아채다:
(1) 상위 클래스에서 생성된 객체와 하위 클래스 객체의 상위 유형 객체를 혼동하지 마십시오.
(2) 객체의 업캐스트 객체는 강제로 서브클래스 객체로 변환될 수 있습니다. 이때 서브클래스 객체는 서브클래스의 모든 속성과 기능을 갖습니다.
(3) 상위 클래스에서 생성된 객체에 대한 참조를 하위 클래스에서 선언한 객체에 할당할 수 없습니다. 예를 들어 "그 사람은 중국인입니다."라고 말할 수 없습니다.