메서드 오버로딩과 오버라이딩의 차이를 자바 코드로 정리했습니다.
오버로딩(Overloading)
같은 클래스 안에서, 같은 이름의 메서드를 매개변수만 다르게 여러 개 만드는 것입니다.
java
class Calculator {
int add(int a, int b) {
return a + b;
}
double add(double a, double b) { // 매개변수 타입이 다름
return a + b;
}
int add(int a, int b, int c) { // 매개변수 개수가 다름
return a + b + c;
}
}
메서드 이름은 add로 똑같지만, 매개변수의 타입이나 개수가 다르면 별개의 메서드로 취급됩니다. 어떤 걸 호출할지는 컴파일 시점에, 넘긴 인자를 보고 정해집니다.
오버라이딩(Overriding)
부모 클래스에서 물려받은 메서드를 자식 클래스의 상황에 맞게 다시 정의(재정의)하는 것을 의미합니다.
java
class Animal {
void sound() {
System.out.println("동물이 소리를 낸다");
}
}
class Dog extends Animal {
@Override
void sound() { // 부모 메서드를 재정의
System.out.println("멍멍");
}
}
java
Animal animal = new Dog();
animal.sound(); // "멍멍" 출력
Animal 타입 변수로 선언했지만, 실제 담긴 객체는 Dog이기 때문에 Dog의 sound()가 실행됩니다. 어떤 메서드가 실행될지는 실행 시점에, 실제 객체 타입을 보고 정해집니다.
핵심 차이
오버로딩 - 오버라이딩
| 관계 | 같은 클래스 내부 | 부모-자식 클래스 사이 |
| 메서드 시그니처 | 이름은 같고 매개변수가 다름 | 이름·매개변수 완전히 동일 |
| 결정 시점 | 컴파일 시점(정적) | 실행 시점(동적) |
| 목적 | 같은 기능을 다양한 입력으로 제공 | 부모의 기능을 자식이 다르게 구현 |
마무리
오버로딩은 매개변수를 다르게, 오버라이딩은 부모의 동작을 다르게.
'DEV > cs' 카테고리의 다른 글
| [CS] Redis란 - 자료구조와 활용 예시 (0) | 2026.09.29 |
|---|---|
| [CS] 애자일(Agile) 방법론이란 (1) | 2026.09.28 |
| [CS] MVC 패턴이란 - 스프링부트 예시로 정리 (0) | 2026.09.26 |
| [CS] OSI 7계층이란 - 각 계층 역할 정리 (0) | 2026.09.25 |
| [CS] 큐(Queue)란 - 구조와 활용 예시 (0) | 2026.09.24 |