자바

Overloading[오버로딩] vs Overriding[오버라이딩]

R4MeN 2024. 5. 28. 01:04

오버로딩(Overloading)

오버로딩이란

  • 두 메서드가 같은 이름을 갖고 있으나 인자의 수나 자료형이 다른 경우를 말함

오버로딩 예시

public class MathUtils {
    public int add(int a, int b) {
        return a + b;
    }

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

    public int add(int a, int b, int c) {
        return a + b + c;
    }
}

 

 

 

 

오버라이딩(Overriding)

오버라이딩이란

  • 상위 클래스의 메서드와 이름과 시그니처가 같은 함수를 하위 클래스에 재정의하는 것을 말함
  • 즉, 상속 관계에 있는 클래스 간에 같은 이름의 메서드를 정의하는 것임

오버라이딩 예시

class Animal {
    public void makeSound() {
        System.out.println("Animal sound");
    }
}

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

public class Main {
    public static void main(String[] args) {
        Animal myDog = new Dog();
        myDog.makeSound();  // 출력: Bark
    }
}

출력 결과

Bark
  • Dog 클래스에서 makeSound() 메서드를 재정의함
  • 오버라이딩을 할 때 개발자의 실수를 방지하기 위해 메서드 위에 @Override를 관례적으로 적음