-
JAVA 오버라이딩(Overriding)과 오버로딩(Overloading) 비교전산학/프로그래밍 2024. 8. 1. 20:08728x90반응형
오버라이딩(Overriding)과 오버로딩(Overloading)은 자바에서 다형성을 구현하는 두 가지 주요 방법입니다. 이 두 개념을 이해하기 위해 예제 코드를 통해 설명하겠습니다.
### 오버라이딩(Overriding)
오버라이딩은 부모 클래스에 정의된 메서드를 자식 클래스에서 재정의하는 것입니다. 이를 통해 자식 클래스는 부모 클래스의 메서드를 자신의 방식으로 동작하게 할 수 있습니다.
```java
// 부모 클래스
class Animal {
void sound() {
System.out.println("동물이 소리를 냅니다.");
}
}
// 자식 클래스
class Dog extends Animal {
@Override
void sound() {
System.out.println("개가 멍멍 짖습니다.");
}
}
public class Main {
public static void main(String[] args) {
Animal myAnimal = new Animal();
Animal myDog = new Dog();
myAnimal.sound(); // 출력: 동물이 소리를 냅니다.
myDog.sound(); // 출력: 개가 멍멍 짖습니다.
}
}
```
위의 예제에서, `Dog` 클래스는 `Animal` 클래스의 `sound` 메서드를 오버라이딩하여 개가 짖는 소리를 출력하도록 재정의했습니다. `@Override` 애너테이션은 메서드 오버라이딩임을 명시적으로 나타내기 위해 사용됩니다.
### 오버로딩(Overloading)
오버로딩은 같은 이름의 메서드를 매개변수의 타입이나 개수에 따라 여러 개 정의하는 것입니다. 이는 동일한 작업을 수행하지만 입력 값이 다를 때 유용합니다.
```java
class MathOperations {
// 두 개의 정수를 더하는 메서드
int add(int a, int b) {
return a + b;
}
// 세 개의 정수를 더하는 메서드
int add(int a, int b, int c) {
return a + b + c;
}
// 두 개의 실수를 더하는 메서드
double add(double a, double b) {
return a + b;
}
}
public class Main {
public static void main(String[] args) {
MathOperations math = new MathOperations();
System.out.println(math.add(2, 3)); // 출력: 5
System.out.println(math.add(2, 3, 4)); // 출력: 9
System.out.println(math.add(2.5, 3.5)); // 출력: 6.0
}
}
```
위의 예제에서, `MathOperations` 클래스는 `add` 메서드를 오버로딩하여 두 개의 정수, 세 개의 정수, 두 개의 실수를 더하는 세 가지 메서드를 정의했습니다. 이렇게 하면 `add` 메서드 이름을 유지하면서 다양한 입력 타입과 개수에 대응할 수 있습니다.
### 정리
- **오버라이딩(Overriding)**: 부모 클래스의 메서드를 자식 클래스에서 재정의. 실행 시간에 메서드가 결정됨(런타임 다형성).
- **오버로딩(Overloading)**: 같은 이름의 메서드를 다른 매개변수로 여러 번 정의. 컴파일 시간에 메서드가 결정됨(컴파일타임 다형성).
이 두 개념은 객체 지향 프로그래밍에서 중요한 역할을 하며, 유연하고 재사용 가능한 코드를 작성하는 데 도움을 줍니다.728x90반응형'전산학 > 프로그래밍' 카테고리의 다른 글
double 자료형과 int 자료형을 계산하면 결과 (0) 2024.08.24 JAVA 접근제한자: public, protected, package, private (0) 2024.08.24 [C, Java, Python] 피보나치 수열(Fibonacci numbers) 코드로 이해하기 (0) 2024.08.13 [C, Java, Python] 하노이의 탑(Tower of Hanoi) 코드 시리즈 (0) 2024.08.13 [프로그래밍] 참조되는 것(Referenced), 참조하는 것(Referencing) 제대로 구분하기 (0) 2024.08.13