한 방법이 다른 방법을 과부하 시키거나 두 방법 모두 "과부하"입니까


13

이 방법을 만들면

public void foo()

그런 다음 오버로드 된 버전을 만듭니다.

public void foo( string bar )

우리는 두 번째 함수가 첫 번째 함수에 과부하를가하거나 두 메서드가 모두 "오버로드"되었다고 말합니까?

이것은 기본 유형 함수가 있고 다른 함수 (상속과는 같지만 실제로는 아닙니다)에 의해 오버로드되는 것을 의미합니다.

한 방법이 다른 방법을 "과부하"할 수 있다고 가정하면 "과부하"및 "과부하"와 같은 용어 일 수도 있습니다. 그러나 여러 가지 과부하가있을 수 있기 때문에 전혀 기분이 좋지 않습니다.

오버로드 된 메소드를 작성하는 프로세스를 작성하고이를 작성하는 가장 올바른 방법을 원했을 때이 질문에 도달했습니다.

예 :

  • 과부하입니다 foo
  • 내가 과부하하고 foo함께foo( string bar )
  • 과부하 된 방법을 만들고 있습니다
  • foo 오버로드하고 있습니다

그렇습니다. 이런 종류의 생각을하게되었습니다. 어떻게해야할지 모르겠습니다. 온라인에는 기능 과부하에 대한 수백 가지의 설명이 있지만, 언뜻 보면이 문제를 해결할 수 없었습니다.


과부하라는 단어가 왜 사용되었는지 알고 싶습니다. 말이되지 않는 것 같습니다. 무엇을로드하고 있습니까? 다시 또는 과도하게 어떻게로드됩니까?
Martin Maat

@MartinMaat thiton이 수락 한 답변kindall의 의견읽었 습니까? 그들은 무엇을로드하는지 설명하는 훌륭한 일을하는 것처럼 보입니다.
8bittree

나는 그것들을 읽었으며 그것들은 개념이 아닌 이의 론을 설명합니다.
Martin Maat

답변:


29

과부하에 대해 말할 때 함수 자체가 아니라 함수 이름 이 오버로드됩니다. 이름을 오버로드하는 함수는 "오버로드"이고 이름을 오버로드하지만 서로는 그렇지 않습니다. 귀하의 예에서 "public void foo()", "public void foo( string bar )"둘 다 "foo"라는 이름을 오버로드합니다. 따라서 함수와 직접적인 관계가 없기 때문에 함수 중 하나의 오버 로더와 오버 로더로 말할 수 없습니다.

귀하의 예에서 "foo"(이름)에 "foo (string bar)"(함수)를 오버로드한다고 말할 수 있지만 메소드가 절대 오버로드되지 않기 때문에 오버로드 된 메소드를 작성할 수는 없습니다. 오버로드 메소드를 작성한다고 말할 수 있습니다. "foo 오버로드 만들기"를 공식화하는 것은 "overload foo"를 말하는 나쁜 방법 일뿐입니다.


그러나 다른 함수가 동일한 함수를 가지고 있지 않더라도 모든 함수가 그 이름을 오버로드하지는 않습니까?
leftaroundabout

위의 일반적인 질문에 대한 답변으로 이에 동의합니다. 그러나 하나가 다른 함수 중 하나를 호출하면 하나가 다른 함수에 과부하가 걸린다는 것을 인식합니다.
Joshua Drake

3
@leftaroundabout : "Overloading"은 평소보다 더 많은 "loading"을하고 있다는 의미이므로 같은 이름의 함수가 둘 이상있을 때만이 용어가 사용됩니다.
kindall

@kindall과 동의 함; 소프트웨어 개발 문맥에서 "과부하"라는 단어는 "하나 이상의 의미를 부여하는 것"을 의미하고; (의미는 다른 매개 변수에 따라 다름) 매개 변수를 오버로드하는 DB (의미는 다른 분야에 따라 다름)의 열 과부하를하는 등 한 가지 방법은 다른 과부하가 걸리지 않지만 하나 이상의 방법이있는 경우 이름 , 이름은 " 과부하 "
KutuluMike

15

나는 단순히 foo과부하 상태 라고 말합니다 . 여기에는 마스터 / 슬레이브 또는 부모 / 자식 관계가 없습니다.


2
동의- 메서드 자체가 아니라 오버로드 된 메서드 또는 연산자 의 이름 입니다. 서브 클래스에서 주어진 메소드의 구현이 상위 클래스의 구현을 대체하는 재정의 와 혼동하지 마십시오 .
Caleb

1
나는 이것에도 동의하지만, thiton이 그것을 설명하는 데 더 잘한다고 생각합니다. 답변 주셔서 감사합니다 !
Willem D' Haeseleer

3

이것을 표현하는 좋은 방법은 시간이 지남에 따라 수업의 변화가 아니라 최종 결과에 집중하는 것이라고 생각합니다. 따라서 " 'foo (other parameters)'를 사용하여 'foo'를 오버로드했습니다"대신 "foo는 'foo ()'및 'foo (other parameters)'를 사용하여 오버로드 된 함수입니다."

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.