메서드 오버로딩 | 메서드 오버라이딩 |
- 동일 클래스 내 메서드 이름을 같게 선언 - 매개변수의 개수, 타입, 순서가 다를 시 적용 - 반환 타입이 달라도 오버로딩으로 간주되지 않음 - 컴파일 타임에 어떤 메서드가 호출될지 결정됨 |
- 상속 관계에서 발생 - 부모 클래스의 메서드를 자식 클래스에서 재정의 - 메서드의 이름, 매개변수, 반환 타입이 동일 - 다형성을 실현하여 런타임에 객체의 타입에 따라 적절한 메서드를 호출할 수 있음 |
[메서드 오버로딩 예시 코드]
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
'용어 > java' 카테고리의 다른 글
[국비][JAVA] 오토박싱과 언박싱 (0) | 2024.06.04 |
---|---|
[국비][JAVA] 인터페이스와 추상(abstract) 차이 (0) | 2024.06.02 |
[국비][JAVA] 참조값 및 객체 이해하기_예시 (0) | 2024.05.30 |
[국비][JAVA] 배열 이해 및 기본형, 참조형 기본 값 (0) | 2024.05.28 |
[국비][JAVA] 자바 메모리 영역 (0) | 2024.05.28 |