오버로딩(Overloading)과 오버라이드(Override)는 객체 지향 프로그래밍에서 중요한 개념이다. 이 두 가지 개념은 다형성(polymorphism)을 구현하는데 사용된다. 다형성은 같은 이름의 메서드나 연산자가 다양한 상황에서 다르게 동작할 수 있는 능력을 의미한다.
1. 오버로딩 (Overloading):
오버로딩은 같은 이름의 메서드를 여러 개 정의하는 것을 말한다. 오버로딩된 메서드들은 서로 다른 매개변수의 타입 또는 개수를 가져야 한다. 컴파일러는 호출된 메서드와 일치하는 매개변수를 찾아 실행한다.
public class Calculator {
// 정수형 덧셈 메서드
public int add(int a, int b) {
return a + b;
}
// 실수형 덧셈 메서드
public double add(double a, double b) {
return a + b;
}
// 문자열 연결 메서드
public String add(String a, String b) {
return a + b;
}
}
add 메서드가 오버로딩된다. 이 메서드들은 매개변수의 타입이나 개수가 서로 다르기 때문에 오버로딩이 가능합니다.
2. 오버라이드 (Override):
오버라이드는 상위 클래스의 메서드를 하위 클래스에서 재정의하는 것을 말한다. 메서드의 이름, 매개변수 타입 및 개수는 동일해야 하며,
오버라이드된 메서드는 상속된 메서드의 동작을 변경할 수 있다.
class Animal {
void sound() {
System.out.println("멍멍");
}
}
class Dog extends Animal {
@Override
void sound() {
System.out.println("개짖는 소리");
}
}
Dog 클래스는 Animal 클래스의 sound 메서드를 오버라이드했다. 따라서 Dog 객체에서 sound 메서드를 호출하면 "개짖는 소리"가 출력된다.
차이점:
- 오버로딩은 같은 이름의 메서드를 다양한 매개변수로 정의하는 것이며, 오버라이드는 상위 클래스의 메서드를 하위 클래스에서 재정의하는 것이다.
- 오버로딩은 컴파일 시간에 결정되고, 오버라이드는 실행 시간에 결정된다.
- 오버로딩된 메서드는 서로 다른 매개변수를 가져야 하지만, 오버라이드된 메서드는 매개변수가 동일해야 합니다.
이러한 오버로딩과 오버라이드는 다형성(polymorphism)을 지원하여 코드의 재사용성을 높이고 유연성을 제공한다.
'JAVA' 카테고리의 다른 글
[JAVA] static (0) | 2024.03.25 |
---|---|
[JAVA] Call By Value / Call By Reference (0) | 2024.03.25 |
[JAVA] Class (0) | 2024.03.25 |
[JAVA] 예외 발생 Exception 및 그 밖의 Exception 종류 및 예시 (1) | 2024.01.10 |
[JAVA] 자바의 자료구조 (1) | 2023.11.27 |