뻘짓
메소드 오버로딩 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