>  기사  >  Java  >  동적 바인딩과 정적 바인딩: Java는 런타임 시 메서드 호출을 어떻게 해결합니까?

동적 바인딩과 정적 바인딩: Java는 런타임 시 메서드 호출을 어떻게 해결합니까?

Mary-Kate Olsen
Mary-Kate Olsen원래의
2024-10-31 09:13:30740검색

 Dynamic vs. Static Binding: How Does Java Resolve Method Calls at Runtime?

다형성 이해: 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); // 20
        obj.sum(10, 10, 10); // 30
    }
}</code>

동적 바인딩(런타임 바인딩)

동적 바인딩에서 메서드 호출은 런타임에 특정 개체에 바인딩됩니다. 이는 하위 클래스가 상위 클래스에 정의된 메서드를 재정의할 때 발생합니다. 예를 들면 다음과 같습니다.

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

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