mobile menu

The Arrow Newsletter

mobile menu

업캐스팅 다운캐스팅 예제

참조 변수를 캐스팅하는 것은 참조하는 개체에 닿지 않지만 이 개체에 다른 방식으로 레이블을 지정하여 작업 할 기회를 확장하거나 축소합니다. 업캐스팅은 이 개체에 사용할 수 있는 메서드 및 속성 목록을 좁히고 다운캐스팅을 확장할 수 있습니다. 이제 Employee 클래스 포인터를 파생 클래스 포인터로 변환하는 데 다운캐스팅을 사용할 수 있습니다. 나는이 질문이 아주 오래 전에 물어 알고 있지만이 질문의 새로운 사용자를위해. 인스턴스오더 업캐스팅, 다운캐스팅 및 인스턴스오더 업캐스팅 사용에 대한 완전한 설명이 들어 있는 이 문서를 읽어보시기 바랍니다: 하위 클래스를 슈퍼 클래스로 캐스팅하려면 업캐스팅(또는 확대)을 사용합니다. 그것은 자동으로 발생, 명시적으로 아무것도 할 필요가 없습니다. Animal 형식의 변수를 사용하여 Cat 클래스에서만 사용할 수 있는 메서드를 호출하려면 어떻게 해야 합니까? 여기에 다운 캐스팅이 온다. 슈퍼 클래스에서 하위 클래스로 캐스팅하는 것입니다. 왜 그렇게, 그 업 캐스팅은 자동이지만, 다운 캐스팅은 수동해야합니까? 글쎄, 당신은 보시고, 업캐스팅은 결코 실패할 수 없습니다. 그러나 당신은 다른 개 그룹을 가지고 자신의 유형에 그들 모두를 다운 캐스팅하려는 경우, 다음이 개 중 일부는 실제로 다른 유형의 것을, 애완 동물, 경찰도, 프로세스는 ClassCastException을 던져, 실패합니다. 실제로 파생 된 클래스 (Manager)의 개체를 가리키지 않는 기본 클래스 포인터 (Employee)를 다운 캐스트하려고하면 파생 클래스 개체 (노란색 영역)에 대한 정보가없는 메모리에 액세스 할 수 있습니다.

이것은 다운 캐스팅의 주요 위험입니다. 업캐스팅은 상속 트리위로 하위 유형을 수퍼타입으로 캐스팅합니다. 업캐스팅은 자동으로 수행되며 명시적으로 아무 것도 할 필요가 없습니다. 프로그램 스니펫을 살펴보겠습니다 – 다운캐스팅을 위해 동적 캐스트를 사용하려면 기본 클래스가 다형성이어야 합니다 – 하나 이상의 가상 함수가 있어야 합니다. 가상 함수를 추가하여 기본 클래스 Person 수정: 이 기본 자습서에서는 업캐스팅, 다운캐스팅, 사용 방법 및 이러한 개념을 통해 다형성을 활용하는 방법을 살펴봤습니다. 업캐스팅은 Java의 또 다른 핵심 개념인 상속과 밀접한 관련이 있습니다. 참조 변수를 사용하여 보다 구체적인 형식을 참조하는 것이 일반적입니다. 그리고 우리가 이 것을 할 때마다 암시적 업캐스팅이 일어납니다. 업캐스팅은 파생 된 클래스 개체의 포인터 또는 참조를 기본 클래스 포인터로 처리하는 프로세스입니다. 수동으로 업캐스트할 필요가 없습니다. 기본 클래스 포인터에 파생 된 클래스 포인터 (또는 참조)를 할당하기만하면됩니다: 하위 클래스 형식이 부모 클래스의 개체를 참조할 때 다운 캐스팅이라고합니다.