>  기사  >  Java  >  Java에서 메서드 재정의와 메서드 오버로딩은 어떻게 다릅니까?

Java에서 메서드 재정의와 메서드 오버로딩은 어떻게 다릅니까?

Linda Hamilton
Linda Hamilton원래의
2024-10-27 20:08:30441검색

How do Method Overriding and Method Overloading Differ in Java?

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

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