자바 다운캐스팅 예제

위의 예에서 eat() 메서드는 재정의됩니다. 즉, eat()는 Animal 형식의 변수에서 호출되지만 실제 개체(고양이와 개)에서 호출되는 메서드에 의해 작업이 수행됩니다. OCaml과 같은 일부 언어는 다운캐스팅을 완전히 허용하지 않습니다. [1] 야옹() 메서드로 이전 AnimalFeeder 예제를 다시 작성해 보겠습니다: 이 문서에서는 기본 변환을 다루었으며 Java가 형식을 처리하는 방법을 잘 이해하기 위해 여기에 캐스팅하는 참조에 중점을 둡니다. 따라서 고양이는 뮤, 동물, 개체 및 고양이입니다. 이 예제의 네 가지 유형 모두의 참조 변수에 할당할 수 있습니다. 다운캐스팅은 Parent 변수에서 참조하는 값의 형식을 알고 있고 값을 매개 변수로 전달할 때 자주 사용되는 경우에 유용합니다. 아래 예제에서 메서드 objectToString 형식 문자열로 가정 되는 개체 매개 변수를 사용 합니다. 이 방법에서 다운캐스팅은 컴파일러가 가능한 오류를 감지하지 못하게 하고 대신 런타임 오류를 발생시킵니다. myObject를 문자열로 다운 캐스팅 (`(String)myObject`)는 myObject가 문자열 형식인 경우가 있기 때문에 컴파일 타임에 불가능했기 때문에 런타임에전달된 매개 변수가 논리적인지 여부를 알아낼 수 있습니다. myObject를 유니버설 java.lang.Object.toString(사용 하 여 컴파일 타임 문자열로 변환할 수 있지만 도움이 되지 않거나 안전하지 않은 경우 toString()의 기본 구현을 호출하는 위험이 있으며 예외 처리는 이를 방지할 수 없습니다. 이 기본 자습서에서는 업캐스팅, 다운캐스팅, 사용 방법 및 이러한 개념이 다형성을 활용하는 데 어떻게 도움이 되는지 에 대해 자세히 설명했습니다. 먼저 다운캐스트가 무엇인지 정확하게 정의하는 데 도움이 됩니다.

실제로 는 매우 간단합니다 – 기본 클래스와 해당 기본 클래스에서 직접 또는 간접적으로 파생되는 클래스가 있다고 가정합니다. 그런 다음 해당 기본 클래스 형식의 개체가 파생 된 클래스 유형으로 캐스팅 될 때마다 다운 캐스트라고합니다. 다운캐스트라고 하는 이유는 상속 다이어그램이 일반적으로 작성되기 때문에 기본 클래스가 맨 위에 있고 파생 클래스가 기본 클래스 아래에 있기 때문입니다. 따라서 다운캐스팅에서는 기본 클래스의 개체를 맨 위에 가져간 다음 파생 클래스 중 하나의 유형으로 변환하려고 시도하여 상속 다이어그램을 아래로 이동합니다(내려가기). 다운 캐스팅이 작성되는 코드에 따라 항상 의미가 있는 것은 아니기 때문에 시도중인 키워드입니다. 위의 코드에서 이 줄은 다운캐스트가 수행되는 위치입니다: Java 형식 시스템은 기본 형식과 참조의 두 가지 유형으로 구성됩니다.