메소드 오버로딩이란?
메소드 오버로딩은 둘 이상의 메소드가 동일한 이름을 공유하지만 매개 변수가 다른 대부분의 객체 지향 프로그래밍 언어의 기능입니다. 구체적으로, 파라미터의 수, 데이터 유형 및 / 또는 순서는 상이하다. 코드가 컴파일되면 올바른 방법이 호출 방법에 따라 자동으로 선택됩니다. 메소드는 일부 프로그래밍 언어에서 함수라고도하므로 메소드 오버로드를 함수 오버로드라고도합니다.
메서드 오버로딩의 간단한 예는 사각형의 면적을 계산하는 방법입니다. getArea (Square s)로 정의 될 수 있습니다. getArea (Circle c) 메소드를 추가하여 원의 면적을 추가로 계산하기 위해이 메소드를 오버로드 할 수 있습니다.
메소드 오버로드의 기본 요구 사항은 메소드가 동일한 이름을 공유해야한다는 것입니다. 메소드 서명, 메소드 이름, 매개 변수 수 및 매개 변수 데이터 유형은 고유하지 않아야합니다. 이런 식으로 컴파일러는 실행할 메소드를 결정할 수 있습니다.
객체를 인스턴스화하는 데 사용되는 메소드 인 생성자가 종종 오버로드됩니다. 이것은 기본값이 아닌 객체를 초기화하기 위해 수행됩니다. 예를 들어, 두 개의 필드 (이름 및 생년월일 또는 dob)가있는 직원 오브젝트에는 Employee (), Employee (name) 및 Employee (name, dob)와 같은 오버로드 된 생성자가있을 수 있습니다. 첫 번째 생성자는 이름과 dob 필드가 비어있는 직원 개체를 만듭니다. 두 번째는 이름 필드를 설정하지만 dob 필드는 비워두고 세 번째는 이름 및 dob 필드를 모두 정의합니다.
메소드 오버로딩은 하나 이상의 메소드를 논리적으로 단일 메소드로 표시하기 위해 수행됩니다. getArea () 예제에는 물리적으로 두 개의 메소드가 있지만 호출자에게는 단일 논리 getArea () 메소드가 제공됩니다. 이런 식으로 getArea ()를 확장하여 다른 형태 (삼각형, 사다리꼴 등)에서 작동하면서도 논리적으로 단일 메소드로 표시됩니다.
이전 버전과의 호환성을 유지하기 위해 메서드가 오버로드되었습니다. 복잡한 계산을 수행하는 방법에는 약간의 변경으로 동일한 계산을 선택적으로 수행해야하는 새로운 요구 사항이 주어질 수 있습니다. 기존 방식 또는 새로운 방식으로 계산을 수행하는 방법을 결정하는 새로운 매개 변수가 메소드에 추가됩니다.
메소드가 호출되는 모든 경우를 찾고 새 매개 변수를 추가하지 않아도 메소드가 과부하 될 수 있습니다. 새로운 메소드는 기존 서명을 가지며 기존 코드에 의해 호출됩니다. 여기에는 로직 자체가 포함되지 않으며 수정 된 메소드를 호출하고 새 매개 변수에 대해 기본적으로 "오래된 방법"을 전달합니다. 새 코드는 수정 된 메소드를 호출하고 적절한 값, 이전 방식 또는 새로운 방식으로 새 매개 변수를 전달합니다.
메소드 오버로딩은 다형성의 한 유형으로, 실제로 동일한 논리적 방법을 여러 방식으로 사용할 수 있습니다. 메서드 오버로드는 메서드 재정의와 다릅니다. 메서드 재정의는 부모 클래스의 메서드 정의가 자식 클래스에 의해 변경되는 곳입니다. 이 경우 두 방법 모두 동일한 서명을 갖습니다.