SeouliteLab

[Java/자바] 오버로딩과 오버라이딩의 차이점 본문

프로그래밍

[Java/자바] 오버로딩과 오버라이딩의 차이점

Seoulite Lab 2024. 3. 19. 14:00

Java에서 오버로딩(Overloading)과 오버라이딩(Overriding)은 다형성(polymorphism)을 구현하는 중요한 개념입니다. 두 가지 개념은 서로 다른 기능을 갖고 있으며, 각각의 특징을 살펴보겠습니다.

1. 오버로딩(Overloading)

오버로딩은 같은 이름의 메소드를 여러 개 정의하는 것을 말합니다. 이때 메소드의 시그니처가 서로 다르게 구성되어야 합니다. 즉, 매개변수의 개수나 타입이 달라야 합니다.

예제 1: 오버로딩

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

위 예제에서는 add 메소드를 정수형 매개변수로 오버로딩한 버전과 실수형 매개변수로 오버로딩한 버전을 보여줍니다.

2. 오버라이딩(Overriding)

오버라이딩은 상위 클래스에서 이미 정의된 메소드를 하위 클래스에서 재정의하는 것을 말합니다. 이때 메소드의 시그니처는 동일해야 합니다.

예제 2: 오버라이딩

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

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

위 예제에서는 Animal 클래스의 makeSound 메소드를 Dog 클래스에서 오버라이딩하여 재정의한 것을 보여줍니다.

3. 차이점 요약

  • 오버로딩은 같은 이름의 메소드를 여러 개 정의하는 것이며, 매개변수의 개수나 타입이 달라야 합니다.
  • 오버라이딩은 상위 클래스의 메소드를 하위 클래스에서 재정의하는 것이며, 메소드의 시그니처는 동일해야 합니다.