본문 바로가기
Language/Java

[JAVA] Override vs Overload

by pin9___9 2023. 12. 5.
728x90

Override (재정의):

1. 상속:

  • **override**는 주로 상속과 관련이 있습니다. 한 클래스(자식 클래스)가 다른 클래스(부모 클래스)의 기능을 확장하고 변경할 때 사용됩니다.

2. 메서드 재정의:

  • 부모 클래스에서 정의된 메서드를 자식 클래스에서 동일한 시그니처로 다시 정의합니다.
  • 자식 클래스에서 재정의된 메서드는 부모 클래스의 메서드를 대체하며, 이를 통해 다형성을 구현할 수 있습니다.
  • @Override 어노테이션을 사용하여 메서드가 정확하게 부모 클래스의 메서드를 재정의하는지 컴파일러에게 알립니다.

예시:

javaCopy code
class Animal {
    void makeSound() {
        System.out.println("Some generic sound");
    }
}

class Dog extends Animal {
    @Override
    void makeSound() {
        System.out.println("Bark bark!");
    }
}

Overload (중복 정의):

1. 동일한 메서드 이름:

  • **overload**는 같은 클래스 내에서 메서드 이름은 같지만 매개변수의 타입, 순서, 개수 중 하나 이상이 다른 여러 메서드를 정의하는 것입니다.

2. 다양한 매개변수:

  • 메서드 오버로딩을 통해 같은 이름의 메서드가 다양한 상황에서 사용될 수 있습니다.

예시:

javaCopy code
class Calculator {
    int add(int a, int b) {
        return a + b;
    }

    double add(double a, double b) {
        return a + b;
    }
}

위의 예제에서 add 메서드가 두 번 정의되었습니다. 하나는 정수를 매개변수로 받고, 다른 하나는 실수를 매개변수로 받습니다. 이렇게 하면 동일한 메서드 이름을 사용하면서 다양한 타입의 데이터에 대한 연산을 수행할 수 있습니다.

차이점 요약:

  • Override: 부모 클래스의 메서드를 자식 클래스에서 다시 정의하여 기능을 변경하거나 확장하는 것.
  • Overload: 같은 클래스 내에서 메서드 이름은 같지만 매개변수의 타입, 순서, 개수 중 하나 이상이 다른 여러 메서드를 정의하는 것.
728x90

댓글