-C# 다시 쓰기의 메소드에 대한 이해 관계
객체 중심 프로그래밍에서,이 메소드 재 작성을 통해 파생 상품 클래스는 기본 클래스 상속 메소드의 자체 구현을 제공 할 수 있습니다. C#은 "가상"및 "재정의"키워드를 다시 작성하거나 동일한 서명으로 새 메소드를 간단히 선언하는 두 가지 매우 다른 재 작성 방법을 제공합니다.
가상 재정의
메소드가 기본 클래스에서 "Virtual"으로 선언되면 "Override"키워드를 사용하여 파생 클래스에서 다시 작성할 수 있습니다. 이 방법을 사용하면 파생 상품이 원래 메소드 서명을 유지하면서 자체 구현을 제공 할 수 있습니다. 실행할 때 객체가 파생 된 유형 인 경우, 객체를 고정하는 참조 변수가 기본 유형이더라도 다시 쓰기 메소드가 호출됩니다.
> new
또는 동일한 서명으로 새 메소드를 선언하여 새 메소드를 다시 작성하여 "새로운"로 표시 할 수 있습니다. 이 메소드는 기본 클래스의 구현을 완전히 대체하며 객체 유형이 실행 중이 든 상관없이 다시 쓰기 메소드가 호출됩니다.
차동 예
차이를 설명하려면 다음 코드 조각을 고려하십시오.
다음과 같이 코드를 호출하는 경우
재 작성 방법에 따라 결과가 다릅니다.
가상 재정의 : 객체가 foo 유형 변수에 저장 되더라도 런타임이있을 때 파생 클래스 (BAR)에서 반복하는 방법.
New : 파생 클래스 (BAR)의 새로운 메소드는 기본 클래스 (FOO)의 구현을 효과적으로 대체하는 데 사용됩니다.
주요 차이
간단히 말해서 "가상", "재정의"및 "새"의 주요 차이점은 다음과 같습니다.
호출 : 가상 재정의는 객체 유형이 파생형 클래스와 일치하는 경우 호출 및 다시 쓰기 메소드 만 허용하며, 객체 유형에 관계없이 새로운 메소드가 항상 호출됩니다.
구현 :
가상 재정의 원래 메소드 서명을 유지하고 파생 클래스가 대체 구현을 제공하고 기본 클래스의 구현을 새롭게 대체합니다.
사용 :
가상 재정의는 다형성에 더 적합하며 새로운 클래스는 자체 구현을 제공합니다.
위 내용은 C# 메소드 재정의 : 가상/재정의 대 신규 - 차이점은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!