>백엔드 개발 >C++ >C# 상속에서`new '와`재정의'의 차이점은 무엇입니까?

C# 상속에서`new '와`재정의'의 차이점은 무엇입니까?

Mary-Kate Olsen
Mary-Kate Olsen원래의
2025-01-28 12:07:08785검색

What's the Difference Between `new` and `override` in C# Inheritance?
c# 상속 : 이해 및

C# 상속에서 키워드 new는 파생 클래스에서 메소드 동작을 관리하는 독특한 방법을 제공합니다. 이 설명은 차이점과 적절한 사용법을 명확하게합니다 override 수정 자 : 별도의 메소드 정의

new 수정자를 통해 파생 클래스는 기본 클래스의 메소드와 동일한 이름을 가진 메소드를 도입 할 수 있습니다. 결정적으로,이 는 기본 클래스 방법을 무시하지 않습니다. 대신, 그것은 완전히 독립적 인 방법을 만듭니다. override 예 :

여기, new는 뚜렷한 방법입니다. 인스턴스에서 를 호출하면 파생 클래스의 버전이 실행됩니다. 인스턴스에서 호출하면 기본 클래스의 버전이 실행됩니다.

수정 자 : 가상 메소드 교체

new 수정자는 기본 클래스에서 가상 메소드의 구현을 대체하는 데 사용됩니다. 기본 클래스 메소드

(또는 )로 선언되어야합니다. 파생 클래스의 인스턴스에서 메소드가 호출 될 때 파생 클래스의 버전이 호출되도록합니다. 예 : 이 경우

<code class="language-csharp">public class BaseClass {
    public void MyMethod() { Console.WriteLine("BaseClass Method"); }
}

public class DerivedClass : BaseClass {
    public new void MyMethod() { Console.WriteLine("DerivedClass Method"); }
}</code>
를 재정의합니다. 인스턴스에서 를 호출하면 항상 버전을 실행합니다. DerivedClass.MyMethod() 요약 된 주요 차이점 : MyMethod() DerivedClass 기능 BaseClass 방법 생성 는 완전히 새로운 방법을 만듭니다 기존 가상 메소드 를 대체합니다 상속 방법 의 상속 체인을 깨뜨립니다 는 상속 체인을 유지합니다 기본 클래스 방법 기본 클래스 방법은 영향을받지 않습니다 기본 클래스 방법은 가상/초록이어야합니다 테이블>

각 수정자를 사용하는 시점 :

  • 사용 기본 클래스의 메소드와 이름을 공유하더라도 파생 클래스에서 완전히 별도의 메소드를 원할 때 사용하십시오. 이것은 의도하지 않은 재정의를 피하고 별개의 기능을 유지하는 데 유용합니다.

    new

  • 사용 기본 클래스에 정의 된 가상 메소드의 동작을 확장하거나 수정하려고 할 때, 해당 특정 방법에 대한 상속 관계를 유지하면서 파생 클래스 내에서 전문화 된 구현을 제공합니다.
  • .

    override 이러한 차이점을 이해함으로써 C# 응용 프로그램에서 상속 및 다형성을 효과적으로 활용할 수 있습니다.

위 내용은 C# 상속에서`new '와`재정의'의 차이점은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.