728x90

메서드 오버라이딩(Overriding)과 메서드 오버로딩(Overloading)은 객체 지향 프로그래밍에서 다형성을 구현하는 두 가지 중요한 개념이다. 오버라이딩과 오버로딩에 대해서 알아보자.
메서드 오버라이딩 (Method Overriding)
메서드 오버라이딩은 서브클래스(subclass)에서 부모 클래스(superclass)의 메서드를 재정의하는 것이다.
- 서브클래스에서 부모 클래스의 메서드를 동일하게(메서드 이름, 매개변수 유형 및 반환 유형) 다시 구현하는 것이다.
- 오버라이딩은 런타임 시에 메서드 호출 시 객체의 실제 유형에 따라 동적으로 결정된다.
class Animal {
public void sound() {
System.out.println("Animal makes a sound");
}
}
class Dog extends Animal {
@Override
public void sound() {
System.out.println("Dog barks");
}
}
public class Main {
public static void main(String[] args) {
Animal animal = new Dog(); // 부모 클래스 변수에 자식 클래스 객체 할당
animal.sound(); // Dog 클래스의 sound 메서드가 호출됨
}
}
메서드 오버로딩 (Method Overloading)
메서드 오버로딩은 같은 클래스 내에서 메서드의 이름은 동일하지만 매개변수의 수, 유형 또는 순서가 다른 여러 버전을 정의하는 것이다.
- 오버로딩은 컴파일 시에 정적으로 결정된다. 즉, 메서드 호출 시 인자의 유형 또는 수에 따라 컴파일러가 적절한 메서드를 선택한다.
class Calculator {
public int add(int a, int b) {
return a + b;
}
public double add(double a, double b) {
return a + b;
}
}
public class Main {
public static void main(String[] args) {
Calculator calculator = new Calculator();
int sum1 = calculator.add(3, 5); // int형 매개변수를 받는 add 메서드 호출
double sum2 = calculator.add(3.5, 2.5); // double형 매개변수를 받는 add 메서드 호출
System.out.println("Sum1: " + sum1);
System.out.println("Sum2: " + sum2);
}
}
간단히 말해, 오버라이딩은 상속 관계에서 부모 클래스의 메서드를 재정의하는 것이며, 오버로딩은 같은 클래스 내에서 메서드의 다양한 버전을 정의하는 것이다.
728x90
'language > JAVA' 카테고리의 다른 글
| [JAVA] 배열, 스트림 활용 (0) | 2024.06.22 |
|---|---|
| [JAVA] 제네릭(Generic), 제네릭 클래스, 제네릭 메서드, 와일드카드 (0) | 2024.06.22 |
| [JAVA][Exception] Map Duplicate key (0) | 2024.06.15 |
| [JAVA] Garbage Collection (0) | 2024.03.26 |
| [JAVA] Comparator, Comparable로 배열과 List를 정렬하기 (0) | 2024.02.16 |