오버라이딩과 오버로딩

송성빈·2023년 12월 2일
post-thumbnail

오버라이딩(Overriding)

  1. 하위 클래스가 상위 클래스에서 상속받은 메서드를 재정의하는 것.

  2. 상속받은 메서드를 하위 클래스에 맞게 변경하거나 확장하는데 사용된다.

    • 메서드의 이름이 같아야 한다.
    • 매개변수의 타입과 개수가 같아야 한다.
    • 리턴타입이 같아야 한다.
class Animal {

    // 오버라이딩 예시
    public void sound() {
        System.out.println("동물 소리");
    }
}
class Dog extends Animal {

    // 상위 클래스의 sound() 메서드 오버라이딩
    @Override
    public void sound() {
        System.out.println("멍멍");
    }
}

오버로딩(Overloading)

  1. 동일한 클래스 내에서 같은 이름을 가진 메서드를 여러개 정의하는 것.

  2. 동일한 작업을 수행하지만 다른 매개변수를 받는 메서드를 구현하는데 사용된다.

    • 메서드 이름이 같아야 한다.
    • 매개변수의 타입과 개수가 달라야 한다.
    • 리턴타입과 접근제어자는 상관없다.
class Calculator {

    // 오버로딩 예시
    public int add(int a, int b) {
        return a + b;
    }

    // 매개변수의 개수가 다른 add 메서드 오버로딩
    public int add(int a, int b, int c) {
        return a + b + c;
    }
    
    // 매개변수의 타입이 다른 add 메서드 오버로딩
    public double add(double a, double b) {
        return a + b;
    }
}

정리

overriding과 overloading는 같은 이름의 메소드를 사용해야 하는건 같지만
매개변수의 타입이나 개수에 따라 달라진다.

overriding은 상속받은 메소드의 내용을 재정의 하는 것이고,
overloading은 같은 이름으로 다양한 매개변수와 다양한 리턴타입의 여러 메소드를 정의하는 것이다.

0개의 댓글