본문 바로가기
BACKEND/JAVA

오버로딩과 오버라이딩의 개념 및 차이점

by 콩밍디 2023. 12. 13.

오버로딩(Overroading)

정의

동일한 메서드 이름을 가지고 매개변수의 타입, 개수, 또는 순서가 다르게 여러 버전의 메서드를 선언하는 것

특징
메서드 이름은 동일하나, 매개변수의 시그니처가 서로 달라야 함
반환 타입은 오버로딩에 영향을 미치지 않음

 

예시 코드

class Example {
    void print(int a) {
        System.out.println(a);
    }

    void print(double b) {
        System.out.println(b);
    }
}

 

 

 

오버라이딩(Overriding)

정의

부모 클래스에서 이미 정의된 메서드를 자식 클래스에서 동일한 시그니처로 재정의하는 것

특징
메서드 시그니처(이름, 매개변수, 반환 타입)가 부모 클래스와 동일해야 함
부모 클래스에서 상속받은 메서드를 자식 클래스에서 다시 구현함으로써 새로운 동작을 정의할 수 있음

 

예시 코드

class Animal {
    void makeSound() {
        System.out.println("Animal makes a sound");
    }
}

class Dog extends Animal {
    @Override
    void makeSound() {
        System.out.println("Dog barks");
    }
}

 

 

오버로딩과 오버라이딩의 차이점

1. 대상
오버로딩 - 같은 클래스 내에서 동일한 메서드 이름을 다양한 매개변수로 정의
오버라이딩 - 부모 클래스에서 상속받은 메서드를 자식 클래스에서 재정의

 

2. 시그니처
오버로딩 - 매개변수의 타입, 개수, 또는 순서가 달라야 함
오버라이딩 - 메서드 시그니처가 부모 클래스와 동일해야 함

 

3. 목적
오버로딩 - 다양한 매개변수로 동일한 동작을 수행할 수 있게 함
오버라이딩 - 부모 클래스의 동작을 자식 클래스에서 수정하거나 추가적인 동작을 정의할 수 있게 함