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