"일꾼이 일을 잘하려면 먼저 도구를 갈고 닦아야 한다." - 공자, 『논어』.
첫 장 > 프로그램 작성 > Java에서 메서드 재정의와 메서드 오버로딩은 어떻게 다릅니까?

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

2024년 11월 21일에 게시됨
검색:729

How do Method Overriding and Method Overloading Differ in Java?

Java에서 동적 다형성과 정적 다형성 구별

Java를 사용한 객체 지향 프로그래밍에서는 동적 다형성과 정적 다형성의 차이점을 이해하는 것이 중요합니다. 이 문서에서는 이 개념을 설명하기 위해 간단한 설명과 예제를 제공합니다.

동적 다형성 대 정적 다형성

다형성을 사용하면 단일 메소드 이름이 대상에 따라 여러 구현을 가질 수 있습니다. 그것을 호출하는 객체 유형. 다형성에는 두 가지 기본 유형이 있습니다.

  • 동적 다형성(런타임 바인딩): 메서드 호출은 실제 객체의 클래스를 기반으로 런타임에 해결됩니다. 이는 하위 클래스의 메서드 재정의에서 발생하며 후기 바인딩이라고도 합니다.
  • 정적 다형성(컴파일 타임 바인딩): 메서드 호출은 선언된 유형을 기반으로 컴파일 타임에 해결됩니다. 참조 변수. 이는 동일한 클래스의 메서드 오버로딩에서 발생하며 초기 바인딩이라고도 합니다.

메서드 오버로딩

메서드 오버로딩은 정적 다형성의 한 형태입니다. 동일한 이름을 가진 메소드가 동일한 클래스에 존재하지만 매개변수가 다릅니다. 오버로드된 메서드를 호출할 때 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
  }
}

메서드 재정의

메서드 재정의는 동일한 이름과 서명을 가진 메서드가 다른 클래스에 선언되었지만 공통 상위 클래스를 공유하는 동적 다형성의 한 형태입니다. 재정의된 메서드를 호출할 때 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
  }
}
최신 튜토리얼 더>

부인 성명: 제공된 모든 리소스는 부분적으로 인터넷에서 가져온 것입니다. 귀하의 저작권이나 기타 권리 및 이익이 침해된 경우 자세한 이유를 설명하고 저작권 또는 권리 및 이익에 대한 증거를 제공한 후 이메일([email protected])로 보내주십시오. 최대한 빨리 처리해 드리겠습니다.

Copyright© 2022 湘ICP备2022001581号-3