Java의 동적 및 정적 다형성 이해
Java의 다형성을 사용하면 서로 다른 클래스의 객체가 차이점에도 불구하고 비슷한 방식으로 동작할 수 있습니다. 이러한 유연성은 동적 및 정적이라는 두 가지 유형의 다형성을 통해 달성됩니다.
동적 다형성
런타임 다형성이라고도 알려진 동적 다형성은 하위 클래스에서 메서드 재정의가 발생할 때 발생합니다. 재정의 메서드에 대한 호출은 실제 객체 유형을 기반으로 런타임 시 해결됩니다.
다음 예를 고려하십시오.
<code class="java">class Animal { public void move() { System.out.println("Animals can move"); } } class Dog extends Animal { @Override public void move() { System.out.println("Dogs can walk and run"); } } public class Main { public static void main(String[] args) { Animal animal = new Animal(); // Animal reference and object Animal dog = new Dog(); // Animal reference but Dog object animal.move(); // Output: Animals can move dog.move(); // Output: Dogs can walk and run } }</code>
이 예에서 move() 메서드는 다음에서 재정의됩니다. 개 수업. 동물 참조가 move() 메서드를 호출하면 객체의 실제 유형(동물 또는 개)에 따라 런타임 시 동작이 결정됩니다. 이것이 동적 다형성입니다.
정적 다형성(메소드 오버로딩)
컴파일 시간 다형성이라고도 불리는 정적 다형성은 이름은 같지만 매개변수 목록이 다른 여러 메서드가 내부에 존재할 때 발생합니다. 같은 수업. 올바른 메소드에 대한 호출은 전달된 인수의 수와 유형에 따라 컴파일 타임에 결정됩니다.
다음 예를 고려하십시오.
<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 calculation = new Calculation(); calculation.sum(10, 10, 10); // Output: 30 calculation.sum(20, 20); // Output: 40 } }</code>
이 예에서 sum() 메소드가 다른 매개변수 목록으로 오버로드되었습니다. 올바른 sum() 메서드에 대한 호출은 전달된 인수 수에 따라 컴파일 타임에 결정됩니다. 이것이 정적 다형성 또는 메소드 오버로딩입니다.
위 내용은 Java에서 동적 다형성과 정적 다형성의 차이점은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!