객체 지향 프로그래밍(OOP)에서 다형성 메커니즘은 의심할 여지 없이 가장 독특한 특징입니다. 다형성을 사용하지 않는 프로그래밍은 OOP라고 할 수 없습니다.
기본적으로 다형성에는 두 가지 유형이 있습니다.
컴파일 시간 다형성(정적 다형성이라고도 함), 런타임 다형성(동적 다형성이라고도 함)(권장 학습: java 과정 )
오버로드는 컴파일 시간 다형성의 예입니다. 컴파일 시간 다형성은 컴파일 시간에 결정되고 결정된 메서드는 런타임에 호출됩니다.
우리가 일반적으로 다형성이라고 부르는 것은 런타임 다형성을 의미합니다. 즉, 컴파일 타임에 어떤 특정 메서드를 호출해야 할지 확실하지 않고 런타임까지 지연되는 것을 말합니다. 이것이 바로 다형성 메서드를 지연 메서드라고 부르는 이유입니다.
다음은 런타임 다형성(이하 다형성)의 메커니즘을 간략하게 소개합니다.
다형성에는 일반적으로 두 가지 구현 방법이 있습니다.
하위 클래스는 상위 클래스를 상속합니다(확장).
클래스는 인터페이스를 구현합니다(구현).
어떤 방법을 사용하든 핵심은 상위 클래스를 이해하는 것입니다. 방법 재작성 또는 런타임에 다양한 실행 효과를 얻기 위해 인터페이스 메서드를 구현합니다.
다형성을 사용하려면 객체를 선언할 때 한 가지 규칙을 따라야 합니다. 즉, 항상 상위 클래스 유형이나 인터페이스 유형을 선언하고 실제 유형을 생성해야 합니다. 예를 들어, ArrayList 객체를 생성한다고 가정하면 선언에서
List list=newArrayList();
대신
ArrayList list=newArrayList();
문을 사용해야 합니다. 메서드 매개 변수를 정의할 때 메서드와 같은 상위 클래스 유형이나 인터페이스 유형을 항상 먼저 사용해야 합니다.
publicvoid doSomething(List list);
대신
publicvoid doSomething(ArrayList list);
로 작성해야 합니다. 이러한 문의 가장 큰 장점은 구조의 유연성입니다. 언젠가 ArrayList의 특성이 내 요구 사항을 충족할 수 없다고 생각되면 이를 다음으로 대체하고 싶습니다. LinkedList를 생성한 다음 객체에 추가하기만 하면 됩니다. new ArrayList()를 생성된 새 LinkedList로 변경하면 됩니다. 다른 코드는 변경할 필요가 없습니다.
위 내용은 Java 다형성은 어떻게 구현됩니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!