동적 바인딩 메커니즘은 기본 클래스에 대한 참조가 올바른 서브 클래스 객체를 가리킬 수 있도록하여 기본 클래스 지향 프로그래밍을 가능하게합니다.
그러나 다음 두 상황에서는 동적 결합이 실패합니다.
1. 기본 클래스 방법은 비공개 또는 최종 수정입니다.
비공개는 메소드가 서브 클래스에 보이지 않는다는 것을 의미하기 때문에 이해하기 쉽습니다. 서브 클래스에서 동일한 이름을 가진 메소드를 작성하는 것은 부모 클래스 방법을 무시하는 것이 아니라 새로운 방법을 재생하는 것이므로 다형성의 문제가 없습니다. 방법은 탁월 할 수 없기 때문에 최종적으로 동일하게 설명 할 수 있습니다.
2.이 방법은 정적으로 수정됩니다
코드는 다음과 같습니다.
클래스베이스 {public static void staticMethod () {System.out.println ( "Base STATICMEHTOD"); } public void dynamicmehtod () {system.out.println ( "Base DynamicMehtod"); }} class sub는 base {public static void staticMethod () {System.out.println ( "sub staticmehtod"); } public void dynamicmehtod () {system.out.println ( "sub dynamicmehtod"); }} public class tj4 {public static void main (String args []) {base c = new sub (); C.StaticMethod (); c.dynamicmehtod (); }}/ * 출력 : BASE STATICMEHTOD SUB DYNAMICMEHTOD */출력 결과는 예상대로 "sub staticmehtod"를 출력하지 않습니다. 정적 메소드는 객체가 아닌 클래스와 관련되기 때문에 c.staticMethod (); car.staticMethod ()와 동일합니다. 따라서 인스턴스 변수를 사용하여 혼란을 피하기 위해 정적 메소드를 호출하지 마십시오.
Java 정적 방법에 대한 위의 상세한 설명은 다형성이 아닙니다. 이것은 내가 당신과 공유하는 모든 콘텐츠입니다. 나는 당신이 당신에게 참조를 줄 수 있기를 바랍니다. 그리고 당신이 wulin.com을 더 지원할 수 있기를 바랍니다.