실제로 중국어 "오버로드"에 해당하는 영어 단어는 재정의, 오버로드 및 덮어쓰기라는 세 가지가 있습니다. 나중에 마지막 단어는 점차 "다시 쓰기" 또는 "다시 쓰기"로 번역되었습니다.
오버라이드는 동일한 시그니처로 상위 클래스의 함수를 재정의하는 행위를 의미합니다. 이 경우 상위 클래스 함수와 하위 클래스 함수는 독립적인 개체입니다. 그러나 호출할 때 컴파일러(또는 인터프리터)는 객체의 실제 유형을 기반으로 호출할 구현을 결정할 수 있습니다.
오버로드는 서명할 수 없는 동일한 함수 이름의 여러 구현을 나타냅니다. 이 경우 동일한 함수 이름을 다른 유형의 매개변수로 호출하여 다른 결과를 생성할 수 있는 경우가 많습니다. 대표적인 예는 max(int, int) 和 max(double, double) 등입니다.
덮어쓰기는 일반적으로 하위 클래스에서 상위 클래스의 동일한 시그니처를 사용하여 함수를 다시 작성하는 것입니다. 두 함수의 시그니처는 동일하지만 서로 관련이 없습니다. 이 경우 상위 클래스 유형은 하위 클래스 객체를 참조하고 호출 메서드는 호출된 상위 클래스 메서드입니다(override와의 차이점에 유의하세요)
덮어쓰기와 재정의의 차이점은 아래와 같습니다
이제 다형성에 대해 이야기해 보겠습니다. 먼저 다형성의 정의를 살펴보겠습니다.
다형성은 동시에 여러 형태를 갖는 동일한 개체를 의미합니다. (빙 뮤직)
다형성은 말 그대로 "여러 상태"를 의미합니다. 객체 지향 언어에서는 인터페이스의 여러 가지 구현을 다형성이라고 합니다. (바이두 백과사전)
정의에 따르면 "오버로딩"은 다형성과 관련이 없지만 오버로딩은 다형성의 한 형태입니다. 다른 것에는 인터페이스, 추상화, 가상 함수, 템플릿, 제네릭 등이 포함되며 Baidu의 백과사전에서 인용한 내용은 다음과 같습니다.
간단히 말하면 한 문장입니다. 하위 클래스 유형의 포인터를 상위 클래스 유형의 포인터에 할당할 수 있습니다. 다형성은 오브젝트 파스칼과 C++ 모두에서 가상 함수를 통해 구현됩니다.
다형성: 동일한 작업이 다른 개체에 적용되며 해석이 다르고 실행 결과가 다를 수 있습니다. 런타임 시 기본 클래스에 대한 포인터를 통해 파생 클래스의 메서드를 호출할 수 있습니다.
C++에는 다형성을 달성하는 방법으로 가상 함수, 추상 클래스, 재정의 및 템플릿이 있습니다(오버로딩은 다형성과 관련이 없음).
다형성을 사용하면 메소드가 동일한 이름을 가질 수 있습니다. 매개변수 또는 반환 값을 상위 유형에서 전달하거나 반환할 수 있습니다.
번역 오류가 있을 수 있습니다. 다형성은 객체가 서로 다른 컨텍스트에서 서로 다른 특성을 나타내는 것을 의미합니다. 예를 들어 하위 클래스인 parent는 상위 클래스에 로그인 메소드가 있고, 하위 클래스에 save라는 새로운 메소드가 추가됩니다. . 또한 Child child1=new Child()를 직접 사용하면 child1 객체는 저장 및 로그인 메소드를 호출할 수 있고 Parent child2 = new Child()를 사용하면 child2 객체는 로그인 메소드만 사용할 수 있습니다. 따라서 상황에 따라 다릅니다.
각 책은 다르게 번역되므로 Override 또는 Overload 등 영어 용어를 지정하는 것이 가장 좋습니다.
Override는 다형성의 표현(예:
은 그렇지 않습니다(예:@Override public String toString() {...}
)이지만@Override public String toString() {...}
),但Overload不是(例如PrintStream.println()
和PrintStream.println(String s)
OverloadPrintStream.println() 코드 > 및
PrintStream.println(String s)
). 🎜실제로 중국어 "오버로드"에 해당하는 영어 단어는 재정의, 오버로드 및 덮어쓰기라는 세 가지가 있습니다. 나중에 마지막 단어는 점차 "다시 쓰기" 또는 "다시 쓰기"로 번역되었습니다.
오버라이드는 동일한 시그니처로 상위 클래스의 함수를 재정의하는 행위를 의미합니다. 이 경우 상위 클래스 함수와 하위 클래스 함수는 독립적인 개체입니다. 그러나 호출할 때 컴파일러(또는 인터프리터)는 객체의 실제 유형을 기반으로 호출할 구현을 결정할 수 있습니다.
오버로드는 서명할 수 없는 동일한 함수 이름의 여러 구현을 나타냅니다. 이 경우 동일한 함수 이름을 다른 유형의 매개변수로 호출하여 다른 결과를 생성할 수 있는 경우가 많습니다. 대표적인 예는
max(int, int)
和max(double, double)
등입니다.덮어쓰기는 일반적으로 하위 클래스에서 상위 클래스의 동일한 시그니처를 사용하여 함수를 다시 작성하는 것입니다. 두 함수의 시그니처는 동일하지만 서로 관련이 없습니다. 이 경우 상위 클래스 유형은 하위 클래스 객체를 참조하고 호출 메서드는 호출된 상위 클래스 메서드입니다(override와의 차이점에 유의하세요)
덮어쓰기와 재정의의 차이점은 아래와 같습니다
이제 다형성에 대해 이야기해 보겠습니다. 먼저 다형성의 정의를 살펴보겠습니다.
다형성은 동시에 여러 형태를 갖는 동일한 개체를 의미합니다. (빙 뮤직)
다형성은 말 그대로 "여러 상태"를 의미합니다. 객체 지향 언어에서는 인터페이스의 여러 가지 구현을 다형성이라고 합니다. (바이두 백과사전)
정의에 따르면 "오버로딩"은 다형성과 관련이 없지만 오버로딩은 다형성의 한 형태입니다. 다른 것에는 인터페이스, 추상화, 가상 함수, 템플릿, 제네릭 등이 포함되며 Baidu의 백과사전에서 인용한 내용은 다음과 같습니다.
번역 오류가 있을 수 있습니다. 다형성은 객체가 서로 다른 컨텍스트에서 서로 다른 특성을 나타내는 것을 의미합니다. 예를 들어 하위 클래스인 parent는 상위 클래스에 로그인 메소드가 있고, 하위 클래스에 save라는 새로운 메소드가 추가됩니다. . 또한 Child child1=new Child()를 직접 사용하면 child1 객체는 저장 및 로그인 메소드를 호출할 수 있고 Parent child2 = new Child()를 사용하면 child2 객체는 로그인 메소드만 사용할 수 있습니다. 따라서 상황에 따라 다릅니다.