25.01.15 TIL Override 와 Overload

신성훈·2025년 1월 15일

TIL

목록 보기
119/162

1. Override와 Overload란?

1.1 메서드 Override (재정의)

  • 부모 클래스의 메서드를 자식 클래스에서 재정의하는 것을 의미
  • 메서드의 이름, 매개변수, 반환 타입 모두 동일해야 함
  • 다형성을 구현하는 데 사용

1.2 메서드 Overload (오버로드)

  • 동일한 이름의 메서드를 다른 매개변수로 여러 번 정의하는 것
  • 매개변수의 개수나 타입이 달라야 함
  • 동일한 동작을 다른 입력에 대해 처리할 때 사용

2. Override와 Overload의 비교

구분OverrideOverload
의미부모 클래스의 메서드를 재정의같은 이름의 메서드를 다른 매개변수로 정의
매개변수부모 메서드와 동일해야 함매개변수가 다르게 정의됨
반환 타입부모 메서드와 동일해야 함반환 타입이 달라도 무방
접근 제한자부모보다 넓거나 같아야 함제한 없음
사용 목적다형성 구현메서드 이름의 일관성 유지, 코드 가독성 향상

3. Override 예시

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

class Dog extends Animal {
    @Override
    void sound() {
        System.out.println("개가 멍멍 소리를 냅니다.");
    }
}

public class Main {
    public static void main(String[] args) {
        Animal animal = new Dog(); // 다형성
        animal.sound(); // 출력: 개가 멍멍 소리를 냅니다.
    }
}

특징

  • @Override 어노테이션은 재정의된 메서드임을 명시
  • 다형성을 활용해 부모 클래스의 참조 타입으로 자식 클래스의 메서드를 호출 가능

4. Overload 예시

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

public class Main {
    public static void main(String[] args) {
        Calculator calc = new Calculator();
        System.out.println(calc.add(1, 2));           // 출력: 3
        System.out.println(calc.add(1.5, 2.5));       // 출력: 4.0
        System.out.println(calc.add(1, 2, 3));        // 출력: 6
    }
}

특징

  • 메서드 이름은 같지만 매개변수의 개수와 타입이 다름
  • 상황에 따라 같은 동작을 다양한 입력에 대해 처리 가능

5. 마무리

Override와 Overload는 객체지향 프로그래밍에서 중요한 개념으로 각각 다형성과 코드 재사용성을 극대화하는 데 기여합니다.
Override를 통해 부모 클래스의 동작을 자식 클래스에서 재정의하며 유연한 설계를 경험할 수 있었습니다.
Overload를 사용해 메서드 이름을 일관되게 유지하면서 다양한 입력을 처리하는 편리함을 체감했습니다.
두 개념을 명확히 구분하고 적재적소에 활용하는 것이 유지보수성과 가독성을 높이는 데 중요하다고 느꼈습니다.

profile
조급해하지 말고, 흐름을 만들고, 기록하면서 쌓아가자.

0개의 댓글