코딩헤딩

메소드 오버로딩 vs 오버라이딩 본문

뻘짓

메소드 오버로딩 vs 오버라이딩

멈머이 2025. 8. 4. 22:40
728x90

* 요약

항목 오버로딩 오버라이딩
정의 같은 이름, 다른 매개변수 부모 메소드 재정의
시점 컴파일 타임 런타임
상속 여부 상관 없음 상속 필수
주 사용 목적 다형성 (오버로드된 메소드 선택) 다형성 (실행 시 메소드 바인딩)

 

* 오버로딩(Overloading)이란?

같은 메소드 이름을 사용하되, 매개변수의 개수나 타입이 다르게 정의된 경우를 말함.
즉, 하나의 기능을 다양한 입력값으로 처리할 때 사용.

 

 # 예시코드

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;
    }
}

오버로딩은 컴파일 타임에 결정되며, 접근 제어자, 반환형은 영향을 주지 않음.

 

 

* 오버라이딩(Overriding)이란?

부모 클래스의 메소드를 자식 클래스에서 재정의하는 것.
즉, 부모 클래스가 정의한 기능을 자식 클래스가 자신의 방식으로 바꿔서 구현할 수 있게 함.

 

 # 예시코드

class Animal {
    public void sound() {
        System.out.println("동물이 소리를 냅니다.");
    }
}

class Dog extends Animal {
    @Override
    public void sound() {
        System.out.println("멍멍!");
    }
}

오버라이딩은 런타임에 결정되며, 메소드 이름, 매개변수, 리턴 타입까지 동일해야 함. 접근 제어자는 부모보다 더 좁게 줄 수 없음.

728x90