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)
반응형
'Java > Grammar' 카테고리의 다른 글
[Java 문법] 불변 객체(Immutable Object)란? ft. 가변 객체 (0) | 2025.03.18 |
---|---|
[Java 문법] I/O Stream (0) | 2025.02.24 |
[Java 문법] enum(enumerated type) (0) | 2025.02.14 |
[Java 문법] String.valueOf() VS toString() (0) | 2025.01.18 |
[Java 문법] Class<?> (0) | 2025.01.17 |