Java의 동적 다형성과 정적 다형성 구별
Java를 사용한 객체 지향 프로그래밍에서는 동적 다형성과 정적 다형성의 차이점을 이해하는 것이 중요합니다. 이 문서에서는 이 개념을 설명하기 위해 간단한 설명과 예제를 제공합니다.
동적 다형성 대 정적 다형성
다형성을 사용하면 단일 메소드 이름이 용도에 따라 여러 구현을 가질 수 있습니다. 그것을 호출하는 객체 유형. 다형성에는 두 가지 기본 유형이 있습니다.
메서드 오버로딩
메서드 오버로딩은 정적 다형성의 한 형태로, 여러 동일한 이름을 가진 메소드가 동일한 클래스에 존재하지만 매개변수가 다릅니다. 오버로드된 메소드를 호출할 때 Java는 전달된 인수의 수와 유형을 기반으로 호출할 적절한 메소드를 결정합니다.
코드 예(메소드 오버로딩):
<code class="java">class Calculation { void sum(int a, int b) { System.out.println(a + b); } void sum(int a, int b, int c) { System.out.println(a + b + c); } public static void main(String[] args) { Calculation obj = new Calculation(); obj.sum(10, 10, 10); // Output: 30 obj.sum(20, 20); // Output: 40 } }</code>
메서드 재정의
메서드 재정의는 동일한 이름과 서명을 가진 메서드가 서로 다른 클래스에 선언되었지만 공통 상위 클래스를 공유하는 동적 다형성의 한 형태입니다. 재정의된 메서드를 호출할 때 Java는 런타임 시 객체의 실제 클래스를 기반으로 호출할 메서드를 결정합니다.
코드 예(메소드 재정의):
<code class="java">class Animal { public void move() { System.out.println("Animals can move"); } } class Dog extends Animal { public void move() { System.out.println("Dogs can walk and run"); } } public class TestDog { public static void main(String[] args) { Animal a = new Animal(); // Animal reference and object Animal b = new Dog(); // Animal reference but Dog object a.move(); // Output: Animals can move b.move(); // Output: Dogs can walk and run } }</code>
위 내용은 Java에서 메서드 재정의와 메서드 오버로딩은 어떻게 다릅니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!