C#에서 베이스 클래스를 상속할 때 메소드 재작성 및 숨기기 차이점

1308 단어

개인적 이해


리메이크(override)는 파생류가 부류를 계승할 때 부류를 직접 사용하지 않고 이름과 같은 방법을 새롭게 정의하여 다태성을 나타낸다.이곳의 다태는 파생류로 기류 대상을 실례화할 때 이 대상이 사용하는 방법을 파생류로 하는 방법에 나타난다.
숨기기 (new) 는 기본 클래스를 숨기는 방법을 가리킨다.나는 이곳의 번역이 좋지 않다고 생각한다. 원래 키워드인 new는 사람들로 하여금 이 개념을 매우 쉽게 이해하게 할 수 있다.new는 내가 성명한 이 방법은'새로운'것으로 기류와 아무런 관계가 없으며 아무리 실례화된 대상이라도 사용하는 것은 자신의 방법이다.

코드의 차이점을 직접 보려면 다음과 같이 하십시오.

public class Parent
{
    public virtual void Method1() => Console.WriteLine("parent Method1");
    public virtual void Method2() => Console.WriteLine("parent Method2");
}

public class Child : Parent
{
    // 
    public override void Method1() => Console.WriteLine("child Method1");
    // 
    public new void Method2() => Console.WriteLine("child Method2");
}

class Program
{
    static void Main(string[] args)
    {
        Parent parent = new Parent();
        parent.Method1();//   parent Method1
        parent.Method2();//   parent Method2

        Child child = new Child();
        child.Method1();//   child Method1
        child.Method2();//   child Method2

        //  
        parent = new Child();
        parent.Method1();//   parent Method1 , 
        parent.Method2();//   child Method2 ,  

        Console.ReadKey();
    }
}

좋은 웹페이지 즐겨찾기