Java/자바 정리

[ 간단 정리 57+ ] 자바, 오버라이딩과 오버로딩의 차이점

코딩하는냥이 2025. 5. 7. 10:19
반응형

✅ 오버라이딩 vs 오버로딩 차이 정리표

구분 오버라이딩 (Overriding) 오버로딩 (Overloading)
의미 상속받은 메서드를 재정의 같은 이름의 메서드를 여러 형태로 정의
적용 대상 상속된 메서드 같은 클래스 내
매개변수 동일해야 함 매개변수 수나 타입이 달라야 함
반환타입 동일하거나 자식 타입 상관 없음
접근 제한자 부모보다 좁아지면 안 됨 상관 없음
대표 키워드 @Override 없음 (자동 판별)
사용 목적 부모 클래스의 기능을 자식이 바꿔 쓰기 위해 같은 기능을 다양한 형태로 쓰기 위해

📌 오버라이딩 예제 (상속에서 재정의)

class Animal {
    void sound() {
        System.out.println("동물이 소리를 냅니다.");
    }
}

class Dog extends Animal {
    @Override
    void sound() {
        System.out.println("멍멍!");
    }
}

 

👉 Dog 클래스는 Animal의 sound() 메서드를 재정의(Override) 해서 자식만의 동작을 하게 만듭니다.


📌 오버로딩 예제 (같은 이름, 다른 매개변수)

class Calculator {
    int add(int a, int b) {
        return a + b;
    }

    double add(double a, double b) {
        return a + b;
    }

    int add(int a, int b, int c) {
        return a + b + c;
    }
}

 

👉 모두 add() 라는 같은 이름의 메서드지만, 매개변수의 수나 타입이 달라서 다른 메서드로 구분됩니다.


💡 포인트 정리

포인트 오버라이딩 오버로딩
어디서? 상속 관계에서 같은 클래스 안에서
왜 써? 부모 기능을 내 방식대로 바꾸기 다양한 입력에 유연하게 대응

😆 연관된 글

42. 생성자 오버로딩 - 다양한 방식의 객체 초기화

46. 메서드 오버로딩(Method Overloading)

57. 메서드 오버라이딩(Method Overriding)