용어/java
[국비][JAVA] 메서드 오버로딩, 오버라이딩 차이
줌인.
2024. 5. 30. 23:12
메서드 오버로딩 | 메서드 오버라이딩 |
- 동일 클래스 내 메서드 이름을 같게 선언 - 매개변수의 개수, 타입, 순서가 다를 시 적용 - 반환 타입이 달라도 오버로딩으로 간주되지 않음 - 컴파일 타임에 어떤 메서드가 호출될지 결정됨 |
- 상속 관계에서 발생 - 부모 클래스의 메서드를 자식 클래스에서 재정의 - 메서드의 이름, 매개변수, 반환 타입이 동일 - 다형성을 실현하여 런타임에 객체의 타입에 따라 적절한 메서드를 호출할 수 있음 |
[메서드 오버로딩 예시 코드]
class MathUtils {
// 매개변수의 개수가 다른 경우
int add(int a, int b) {
return a + b;
}
// 매개변수의 타입이 다른 경우
double add(double a, double b) {
return a + b;
}
// 매개변수의 순서가 다른 경우
String add(String a, int b) {
return a + b;
}
}
public class Main {
public static void main(String[] args) {
MathUtils math = new MathUtils();
System.out.println(math.add(1, 2)); // 출력: 3
System.out.println(math.add(1.0, 2.0)); // 출력: 3.0
System.out.println(math.add("Number: ", 2)); // 출력: Number: 2
}
}
[메서드 오버라이딩 예시 코드]
class Animal {
void sound() {
System.out.println("Animal makes a sound");
}
}
class Dog extends Animal {
@Override
void sound() {
System.out.println("Dog barks");
}
}
public class Main {
public static void main(String[] args) {
Animal myDog = new Dog();
myDog.sound(); // 출력: Dog barks
}
}
728x90