메소드 오버라이딩과 오버로딩은 Java 다형성의 다른 표현입니다. 재정의는 부모 클래스와 하위 클래스 간의 다형성을 나타내는 것이며, 오버로딩은 클래스의 다형성을 나타내는 것입니다.
하위 클래스에 정의된 메서드가 상위 클래스와 동일한 이름과 매개변수를 갖는 경우 해당 메서드가 재정의되고 있다고 말합니다. 하위 클래스의 객체가 이 메서드를 사용하면 하위 클래스의 정의가 호출됩니다. 이에 대해 상위 클래스의 정의는 "보호"된 것처럼 보입니다.
동일한 이름을 가진 여러 메서드가 클래스에 정의되어 있고 매개변수 수, 매개변수 유형 또는 매개변수 순서가 다를 수 있는 경우 이를 메서드 오버로딩이라고 합니다. 액세스 권한, 반환 유형 또는 예외 발생으로 인해 오버로드될 수 없습니다.
1. 메소드 오버로드(overload)
개념: 간단히 말하면, 메소드 오버로딩은 호출자가 제공한 매개변수에 따라 사용되는 메소드가 동일한 클래스의 여러 구현 메소드입니다.
참고 사항:
(1) 메소드 이름이 동일합니다. (2) 메소드의 매개변수 유형, 개수 및 순서가 적어도 하나 이상 다르지 않습니다. (3) 메소드의 반환 유형이 다를 수 있습니다. (4) 메소드는 다를 수 있습니다. 반환 유형만 다른 경우에는 오버로딩을 구성할 수 없습니다. 오버로딩에 제어 액세스 수정자 기호만 다른 경우에는 오버로딩을 구성할 수 없습니다.
오버로드된 메서드는 반환 값의 유형을 변경할 수 있습니다.
2. 메소드 오버라이드(override)
개념: 간단히 말하면, 메서드 적용 범위는 하위 클래스에 상위 클래스의 메서드와 동일한 이름, 반환 유형 및 매개변수를 갖는 메서드가 있음을 의미합니다. 그런 다음 하위 클래스의 메서드가 상위 클래스의 메서드를 재정의한다고 말합니다. 수업.
참고: 메서드 적용 범위에는 여러 가지 조건이 있습니다. 일반적으로 주의해야 할 두 가지 사항이 있습니다.
(1) 하위 클래스 메소드의 반환 유형, 매개변수 및 메소드 이름은 상위 클래스 메소드의 반환 유형, 매개변수 및 메소드 이름과 정확히 동일해야 합니다. 그렇지 않으면 컴파일 오류가 발생합니다.
(2) 하위 클래스 메서드는 상위 클래스 메서드의 액세스 권한을 줄일 수 없습니다(반대의 경우도 가능).
예:
인스턴스 재정의