⚡ Java - 오버로딩과 오버라이딩의 차이점
⚡ Java - 오버로딩과 오버라이딩의 차이점
🔹 오버로딩과 오버라이딩의 차이점
▫️ 오버로딩(Overloading
)
1
2
3
4
5
6
7
8
9
10
11
12
13
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
)
1
2
3
4
5
6
7
8
9
10
11
class Animal {
public void sound() {
System.out.println("Some sound");
}
}
class Dog extends Animal {
public void sound() {
System.out.println("Bark");
}
}
- 상속 관계에서 부모 클래스의 메서드를 자식 클래스가 재정의하는 것
- 메서드의 이름, 매개변수, 리턴 타입이 모두 동일해야 함
- 동적 바인딩(실행 시간에 결정)
▫️ 정리
항목 | 오버로딩 | 오버라이딩 |
---|---|---|
정의 위치 | 같은 클래스 내 | 상속 관계의 다른 클래스 |
시점 | 컴파일 타임 | 런타임 |
메서드 시그니처 | 이름은 같지만 매개변수가 다름 | 이름, 매개변수, 리턴 타입 모두 동일 |
목적 | 편의성 제공 (유연한 호출) | 부모 클래스의 기능 재정의 |
애노테이션 사용 | 사용 안 함 | @Override 필수 권장 |
This post is licensed under CC BY 4.0 by the author.