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
    }
}

 

 

차이점 요약:

  • 오버라이딩상속 관계에서 발생하며, 자식 클래스가 부모 클래스의 메소드를 덮어쓰는 개념입니다. 호출할 때, 자식 클래스의 메소드가 우선적으로 실행됩니다.
  • 오버로딩같은 클래스 내에서 동일한 이름의 메소드를 여러 개 정의하지만, 매개변수의 타입이나 개수에 따라 서로 다른 메소드가 호출됩니다.

따라서 오버라이딩은 상속과 관련된 동작을 변경하는 것이고, 오버로딩은 같은 이름의 메소드를 여러 가지 형태로 제공하여 다양한 입력을 처리하는 방식입니다.