Language/java
[java]오버라이딩 오버로딩 코드 차이 차이점 요약
딸기뚜왈기
2024. 10. 14. 20:22
오버라이딩
class Parent {
int compute(int num) {
return num * num; // 부모의 메소드: 제곱 연산
}
}
class Child extends Parent {
@Override
int compute(int num) {
return num + num; // 자식의 메소드: 덧셈 연산
}
}
public class Test {
public static void main(String[] args) {
Parent obj = new Child();
System.out.println(obj.compute(4)); // 자식 클래스의 메소드가 호출됨 (4 + 4 = 8)
}
}
오버로딩
class Calculator {
int compute(int num) {
return num * num; // 정수 제곱
}
double compute(double num) {
return num * num; // 실수 제곱
}
int compute(int a, int b) {
return a + b; // 두 정수 덧셈
}
}
public class Test {
public static void main(String[] args) {
Calculator calc = new Calculator();
System.out.println(calc.compute(4)); // 4 * 4 = 16
System.out.println(calc.compute(3.5)); // 3.5 * 3.5 = 12.25
System.out.println(calc.compute(2, 3)); // 2 + 3 = 5
}
}
차이점 요약:
- 오버라이딩은 상속 관계에서 발생하며, 자식 클래스가 부모 클래스의 메소드를 덮어쓰는 개념입니다. 호출할 때, 자식 클래스의 메소드가 우선적으로 실행됩니다.
- 오버로딩은 같은 클래스 내에서 동일한 이름의 메소드를 여러 개 정의하지만, 매개변수의 타입이나 개수에 따라 서로 다른 메소드가 호출됩니다.
따라서 오버라이딩은 상속과 관련된 동작을 변경하는 것이고, 오버로딩은 같은 이름의 메소드를 여러 가지 형태로 제공하여 다양한 입력을 처리하는 방식입니다.