본문 바로가기

CS

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

오버로딩(Overloading)과 오버라이딩(Overriding)은 객체 지향 프로그래밍에서 중요한 개념입니다. 둘 다 다형성(polymorphism)을 구현하는 방법 중의 하나이지만 서로 다른 의미와 사용 방법을 갖고 있습니다.

  1. 오버로딩 (Overloading):
    • 오버로딩은 같은 이름의 메서드나 함수를 여러 개 정의하되, 매개변수의 개수, 타입 또는 순서가 다르도록 하는 것입니다.
    • 동일한 이름의 메서드를 여러 개 선언하여, 각각 다른 매개변수를 받아들일 수 있도록 합니다.
    • 컴파일러는 오버로딩된 메서드를 호출할 때 전달된 매개변수에 따라 적합한 메서드를 선택합니다.
    • 예를 들어, 같은 이름의 함수가 숫자형 매개변수를 받는 경우와 문자열을 받는 경우를 오버로딩하여 다르게 처리할 수 있습니다.
  2. 오버라이딩 (Overriding):
    • 오버라이딩은 부모 클래스(상위 클래스)의 메서드를 하위 클래스에서 재정의하는 것을 말합니다.
    • 상속 관계에서 하위 클래스는 부모 클래스의 메서드를 동일한 시그니처(메서드 이름, 매개변수, 반환 유형)로 다시 구현할 수 있습니다.
    • 부모 클래스의 메서드를 자식 클래스에서 오버라이드하여, 자식 클래스의 객체가 해당 메서드를 호출할 때 자식 클래스에서 재정의한 내용이 실행됩니다.
    • 이를 통해 다형성을 구현하여, 동일한 메서드 호출이 객체의 실제 유형에 따라 다르게 동작하도록 할 수 있습니다.

 

오버로딩은 같은 이름의 다수의 메서드를 정의하여 다양한 매개변수를 처리하는 것이고, 오버라이딩은 상속 관계에서 부모 클래스의 메서드를 자식 클래스에서 재정의하여 다양한 동작을 구현하는 것입니다.