>Java >java지도 시간 >Java에서 동적 다형성과 정적 다형성의 차이점은 무엇입니까?

Java에서 동적 다형성과 정적 다형성의 차이점은 무엇입니까?

Mary-Kate Olsen
Mary-Kate Olsen원래의
2024-10-30 11:15:20842검색

What is the difference between dynamic and static polymorphism in Java?

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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.