Java/Grammar

[Java 문법] Overloading VS Overriding

annovation 2025. 2. 23. 10:01

Overloading VS Overriding

  • Java는 객체지향 프로그래밍 언어로, 여러 메서드를 정의하거나 재정의할 수 있는 기능이 매우 중요합니다.
  • 특히 Overloading(오버로딩)과 Overriding(오버라이딩)은 코드의 유연성과 재사용성을 극대화하기 위해 자주 사용됩니다. 
특징 Overloading Overriding
정의 메서드 이름은 동일하지만 매개변수가 다름 부모 클래스의 메서드를 재정의
적용 대상 동일 클래스 상속 관계
결정 시점 컴파일 시점 실행 시점
주요 목적 메서드의 다양성 제공 메서드의 동작 변경
다형성 유형 컴파일 타임 폴리모피즘 런타임 폴리모피즘

Overloading

  • Overloading은 같은 이름의 메서드를 매개변수(parameter)의 형태만 다르게 하여 여러 개 정의하는 것을 말합니다.
  • 하나의 메서드 이름으로 다양한 매개변수를 처리할 수 있도록 하는 기능입니다.

(1) 예시

public class Calculator {
    // 정수를 더하는 메서드
    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;
    }
}

 

(2) 특징

1. 메서드 이름은 동일하지만 매개변수의 개수나 타입이 다름

2. 컴파일 시점(프로그램 실행 전)에 결정됨, 이를 컴파일 타임 폴리모피즘(Compile-time Polymorphism)이라고 함

3. 가독성을 높이고 코드를 단순화함, 다양한 입력을 처리해야 할 때 메서드 이름을 계속 새로 만들 필요가 없음


Overriding

  • Overriding은 부모 클래스(상위 클래스)의 메서드를 자식 클래스(하위 클래스)에서 재정의하여 새로운 동작을 구현하는 것을 말합니다.

(1) 예시

class Animal {
    // 부모 클래스 메서드
    public void sound() {
        System.out.println("동물이 소리를 냅니다");
    }
}

class Dog extends Animal {
    // 부모 클래스의 메서드를 재정의
    @Override
    public void sound() {
        System.out.println("멍멍");
    }
}

 

(2) 특징

1. 부모 클래스의 메서드 이름, 반환 타입, 매개변수 모두 동일

2. 실행 시점(프로그램 실행 중)에 결정됨, 이를 런타임 폴리모피즘(Runtime Polymorphism)이라고 함

3. 상속 관계에서만 사용 가능

4. @Override 어노테이션(Annotation)을 붙여 명시적으로 재정의했음을 알림


요약

  • Overloading은 같은 이름의 메서드를 매개변수만 다르게 하여 여러 개 정의하는 것
  • Overriding은 부모 클래스의 메서드를 자식 클래스에서 재정의하는 것

출처

OpenAI ChatGPT (https://openai.com)

반응형