메소드 과부하 란 무엇입니까?

메소드 과부하는 대부분의 객체 지향 프로그래밍 언어에서 두 개 이상의 메소드가 동일한 이름을 공유하지만 다른 매개 변수를 갖는 기능입니다. 구체적으로, 매개 변수의 숫자, 데이터 유형 및/또는 순서는 다릅니다. 코드가 컴파일되면 코드가 호출되는 방법에 따라 올바른 메소드가 자동으로 선택됩니다. 메소드는 일부 프로그래밍 언어의 함수라고도 알려져 있으므로 메소드 과부하가 기능 과부하라고도합니다.

메소드 과부하의 간단한 예는 사각형의 영역을 계산하는 메소드입니다. getarea (square s)로 정의 될 수 있습니다. 이 방법은 GetArea (Circle C)를 추가하여 원의 영역을 추가로 계산하기 위해 과부하 될 수 있습니다.

메소드 과부하의 주요 요구 사항은 메소드가 동일한 이름을 공유한다는 것입니다. 메소드 서명 (메소드 이름, 매개 변수 수 및 매개 변수 데이터 유형)은 고유해야합니다. 이런 식으로, thE 컴파일러는 실행할 방법을 결정할 수 있습니다.

객체를 인스턴스화하는 데 사용되는 방법 인 생성자는 종종 과부하됩니다. 이는 비 디폴트 값으로 객체를 초기화하기 위해 수행됩니다. 예를 들어, 두 개의 필드 (이름 및 생년월일 또는 DOB)가있는 직원 객체에는 다음의 과부하 된 생성자가있을 수 있습니다 : Employee (), 직원 (이름) 및 직원 (이름, DOB). 첫 번째 생성자는 빈 이름과 DOB 필드를 가진 직원 객체를 만듭니다. 두 번째는 이름 필드를 설정하지만 DOB 필드를 비워두고 세 번째는 이름과 DOB 필드를 모두 정의합니다.

메소드 과부하는 하나 이상의 메소드가 단일 메소드로 표시되도록 가장 자주 수행됩니다. getArea () 예에서는 물리적으로 두 가지 방법이 있지만 발신자는 단일의 논리적 getArea () 메소드가 제공됩니다. 이런 식으로, getArea ()는 다른 형태 (삼각형, 사다리꼴,Nd So - 여전히 단일 방법으로 논리적으로 제시하는 동안.

방법은 또한 거꾸로 호환성을 보존하기 위해 과부하되어 있습니다. 복잡한 계산을 수행하는 방법에는 약간의 변경으로 동일한 계산을 선택적으로 수행하기위한 새로운 요구 사항이 제공 될 수 있습니다. 새로운 매개 변수가 계산을 수행하는 방법 - 기존 방식 또는 새로운 방식으로 추가됩니다.

메소드가 호출되는 모든 경우를 찾지 않으려면 새 매개 변수를 추가하면 메소드를 과부하 할 수 있습니다. 새 방법은 이전 서명을 가지며 기존 코드로 호출됩니다. 논리 자체가 포함되어 있지 않으며 단순히 수정 된 메소드를 호출하고 새 매개 변수에 대해 "이전 방법"의 기본값으로 전달됩니다. 새 코드는 수정 된 메소드를 호출하고 적절한 값, 이전 방식 또는 새로운 방식으로 새 매개 변수를 전달합니다.

방법 과부하는 다형성의 한 유형이며, 실제로 동일한 논리적 방법이 실제로 여러 가지 방식으로 사용될 수 있습니다. 나thod 오버로드는 메소드 재정의와 다릅니다. 메소드 오버라이딩은 부모 클래스에서 메소드의 정의가 아동 클래스에 의해 변경되는 곳입니다. 이 경우 두 방법 모두 동일한 서명을 갖습니다.

다른 언어

이 문서가 도움이 되었나요? 피드백 감사드립니다 피드백 감사드립니다

어떻게 도와 드릴까요? 어떻게 도와 드릴까요?