"일꾼이 일을 잘하려면 먼저 도구를 갈고 닦아야 한다." - 공자, 『논어』.
첫 장 > 프로그램 작성 > C#의 가상 대 새로 : 기본 클래스 방법을 재정의하거나 숨길 때?

C#의 가상 대 새로 : 기본 클래스 방법을 재정의하거나 숨길 때?

2025-01-29에 게시
검색:509

Virtual vs. New in C#: When to Override or Hide Base Class Methods?

에서 c# 의 가상 및 새로운 키워드 사용. 객체 지향 프로그래밍에서 일반적으로 기본 클래스에 정의되며 이러한 방법은 파생형 클래스에서 다시 작성 또는 재정의됩니다. "가상"과 "새로운"키워드를 모두 사용하여 메소드 선언을 수정할 수 있지만 구현 방법이 다릅니다.

흙을 다시 쓰기

기본 클래스에서 "가상"으로 선언 된 메소드는 서브 클래스를 다시 작성할 수 있음을 나타냅니다.

    파생 클래스가 상속 체인을 파괴하지 않고 구현을위한 다른 방법을 제공하도록 허용합니다.
  • 새로운 키워드

파생어 클래스의 Foundation Chinese 방법과 동일한 이름의 새로운 방법을 명시하십시오.

기본 방법을 숨기고 파생 클래스에서 새 구현을 만듭니다.
  • 상속 체인을 파괴하는데, 이는 파생 된 방법이 기본 방법과 관련이 없음을 의미합니다.
다음 코드를 고려하십시오 :

공개 클래스 기반 {{ 공개 가상 부울 dosomething () {return false;} } 공개 수업 파생 : 기본 : 기본 {{ Public Override bool dosomething () {return true;} }

파생 인스턴스를 생성하고 기본 유형 변수에 저장하면 DoSomething () 호출은 파생에서 다시 쓰는 메소드를 호출합니다.

public class Base
{
    public virtual bool DoSomething() { return false; }
}

public class Derived : Base
{
    public override bool DoSomething() { return true; }
}
반대로, 우리가 파생에서 새로운 키워드를 사용하면, dosomething ()에 대한 호출은 기본 유형이더라도 새로운 메소드를 호출합니다.

공개 클래스 파생 : 기본 {{ 공개 새로운 bool dosomething () {return true;} }
Base a = new Derived();
a.DoSomething(); // 返回 true
base a = new devived (); a.dosomething (); // true로 돌아 가기 (도출 된 새로운 메소드)

public class Derived : Base
{
    public new bool DoSomething() { return true; }
}
가상 재 작성을 사용하여 상속 체인을 유지하면서 동작을 상속하고 확장하십시오.
Base a = new Derived();
a.DoSomething(); // 返回 true (Derived 中的新方法)
최신 튜토리얼 더>

부인 성명: 제공된 모든 리소스는 부분적으로 인터넷에서 가져온 것입니다. 귀하의 저작권이나 기타 권리 및 이익이 침해된 경우 자세한 이유를 설명하고 저작권 또는 권리 및 이익에 대한 증거를 제공한 후 이메일([email protected])로 보내주십시오. 최대한 빨리 처리해 드리겠습니다.

Copyright© 2022 湘ICP备2022001581号-3