메서드 재정의:
단순한 이름 지정의 문제가 아니라 Java의 기본 기능입니다.
동적 메소드 디스패치 개념을 기반으로 합니다.
동적 메서드 디스패치:
겹치는 메서드에 대한 호출을 컴파일 타임이 아닌 런타임에 해결하는 메커니즘입니다.
Java에서 다형성 구현을 허용합니다.
작동 방식:
슈퍼클래스 참조 변수는 하위 클래스 객체를 참조할 수 있습니다.
슈퍼클래스 참조를 통해 오버라이드된 메소드를 호출하는 경우 호출 당시의 객체 유형에 따라 실행할 메소드 버전이 결정됩니다.
따라서 실행할 메소드는 런타임에 선택됩니다.
중요성:
참조된 객체의 유형(참조 변수의 유형이 아님)에 따라 실행될 재정의된 메서드 버전이 결정됩니다.
이를 통해 슈퍼클래스 참조 변수에 의해 참조되는 다양한 유형의 객체가 재정의된 메서드의 다양한 버전을 호출할 수 있습니다.
프로그램 구조:
슈퍼클래스: Sup, who() 메소드 사용.
하위 클래스: Sub1 및 Sub2는 모두 who() 메서드를 재정의합니다.
main()에서 실행:
superOb(Sup 유형), subOb1(Sub1 유형) 및 subOb2(Sub2 유형) 객체 생성.
Sup 유형의 supRef 참조 변수는 다양한 객체를 참조하는 데 사용됩니다.
행동:
프로그램 출력:
참조된 객체의 유형(superOb, subOb1, subOb2)에 따라 해당 버전의 who() 메소드가 호출되어 표시됩니다.
이는 실행되는 메서드가 런타임에 결정되어 다형성을 구현할 수 있는 동적 디스패치의 개념을 보여줍니다.
부인 성명: 제공된 모든 리소스는 부분적으로 인터넷에서 가져온 것입니다. 귀하의 저작권이나 기타 권리 및 이익이 침해된 경우 자세한 이유를 설명하고 저작권 또는 권리 및 이익에 대한 증거를 제공한 후 이메일([email protected])로 보내주십시오. 최대한 빨리 처리해 드리겠습니다.
Copyright© 2022 湘ICP备2022001581号-3