오버로딩(Overloading)과 오버라이딩(Overriding)은 객체 지향 프로그래밍(OOP)에서 다형성(Polymorphism)을 구현하는 두 가지 중요한 개념이다.
- 오버로딩 (Overloading):
- 오버로딩은 같은 이름의 메서드나 생성자를 여러 개 정의하는 것
- 메서드나 생성자의 이름은 같지만, 매개변수의 타입, 개수, 또는 순서가 다르게 정의됨
- 오버로딩은 컴파일러가 메서드 호출 시에 적절한 메서드를 선택할 수 있도록 해주며, 코드의 가독성을 높이고 사용자에게 편의성을 제공함
class Calculator {
int add(int a, int b) {
return a + b;
}
double add(double a, double b) {
return a + b;
}
}
- 오버라이딩 (Overriding):
- 오버라이딩은 부모 클래스에서 정의된 메서드를 자식 클래스에서 다시 정의하는 것
- 부모 클래스와 자식 클래스 간의 관계에서 발생하며, 자식 클래스는 부모 클래스의 메서드를 동일한 시그니처(이름, 매개변수, 반환 타입)로 재정의함
- 오버라이딩은 다형성의 핵심 원칙 중 하나로, 부모 클래스의 메서드를 자식 클래스에서 필요에 맞게 재정의할 수 있음
class Animal {
void makeSound() {
System.out.println("Some sound");
}
}
class Dog extends Animal {
void makeSound() {
System.out.println("Bark");
}
}
차이점:
- 오버로딩:
- 메서드 이름은 같지만, 매개변수의 타입, 개수, 또는 순서가 달라야 한다.
- 반환 타입은 오버로딩과 무관하다.
- 컴파일 시간에 결정된다.
- 오버라이딩:
- 메서드 이름, 매개변수, 반환 타입이 부모 클래스의 메서드와 동일해야 한다.
- 자식 클래스에서 부모 클래스의 메서드를 재정의한다.
- 런타임에 객체의 실제 타입을 기반으로 호출할 메서드가 결정된다.
Animal animal = new Dog();
animal.makeSound(); // Dog 클래스의 makeSound가 호출된다 (오버라이딩).
이러한 오버로딩과 오버라이딩은 다형성을 제공하여 유연하고 재사용 가능한 코드를 작성할 수 있게 해준다.
728x90
반응형
'JAVA' 카테고리의 다른 글
Comparable과 Comparator (0) | 2024.01.23 |
---|