본문 바로가기

면접준비

오버라이딩과 오버로딩

오버라이딩(Overriding)과 오버로딩(Overloading)은 객체 지향 프로그래밍에서 메서드 다형성을 구현하는 두 가지 다른 개념입니다.

  1. 오버라이딩(Overriding):
    • 오버라이딩은 상속 관계에서 부모 클래스의 메서드를 자식 클래스에서 재정의하는 것을 의미합니다.
    • 오버라이딩은 메서드 이름, 매개변수 리스트 및 반환 타입이 부모 클래스의 메서드와 동일해야 합니다.
    • 오버라이딩된 메서드는 부모 클래스의 메서드보다 접근 제어자를 더 좁은 범위로 변경할 수 있습니다(예: 부모 클래스의 메서드가 public이면 자식 클래스에서는 protected 또는 private으로 변경 가능).
    • 오버라이딩은 런타임 시에 호출되는 메서드가 결정되므로 동적 바인딩(dynamic binding)이라고도 합니다.
    • 주로 다형성을 구현하는 데 사용됩니다.
  2. 오버로딩(Overloading):
    • 오버로딩은 같은 이름의 메서드를 여러 개 정의하는 것을 의미합니다. 이 때 메서드들은 매개변수의 타입, 개수, 순서가 서로 달라야 합니다.
    • 오버로딩된 메서드는 같은 이름을 가지지만 서로 다른 시그니처를 가지며, 반환 타입이나 접근 제어자는 오버로딩의 조건에 영향을 주지 않습니다.
    • 오버로딩은 컴파일 시에 호출될 메서드가 결정되므로 정적 바인딩(static binding)이라고도 합니다.
    • 주로 같은 기능을 수행하지만 서로 다른 매개변수를 받는 메서드를 구현할 때 사용됩니다.

간단히 말하자면, 오버라이딩은 같은 메서드 이름을 가진 메서드들 중에서 실제로 호출될 메서드를 결정하는 데 사용되며, 오버로딩은 같은 이름을 가진 여러 메서드들을 정의하는 데 사용됩니다.