C#의 override 및 new

1700 단어 C#
코드를 직접 보면 알 수 있다.
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace    
{
    class Base
    {
        virtual public void outClassName()
        {
            Console.WriteLine( "  " );
        }

        virtual public void outPut()
        {
            Console.WriteLine("  ");
        }
    }

    class FirstDerived : Base
    {
        override public void outClassName()
        {
            Console.WriteLine("       outClassName  ");
        }

        override public void outPut()
        {
            Console.WriteLine("        outPut  ");
        }
    }

    class SecondDerived : FirstDerived
    {
        public override void outClassName()
        {
            Console.WriteLine("       outClassName  ");
        }
        new public void outPut()
        {
            Console.WriteLine("        outPut  ");
        }
    }

    class Program
    {
        static void Main(string[] args)
        {
            SecondDerived sd = new SecondDerived();
            Base base1 = (Base)sd;
            base1.outPut();//        outPut  
            base1.outClassName();//       outClassName  
        }
    }
}

그림 C#의 원어:
대상 기본 클래스 부분의 인용을 사용하여 덮어쓰는 방법을 호출하면 방법의 호출은 파생 클래스 차원에서 삭을 따라 실행되며 오버라이드로 표시된 방법의 최고 파생 버전까지 실행됩니다.이 말의 키워드는 파생류 차원에서 삭을 따라 집행하고 오버라이드로 표시하는 방법이다
그러니까 new 표기로 거슬러 올라가지 않는 방법이라면
new를 사용하면 내 이해로는 이 방법과 부류 (부류의 부류) 를 차단하는 것이다.라벨
new public void outPut() {Console.WriteLine("두 번째 파생 클래스의 outPut 방법")        }
이 방법은 상위 클래스의 void outPut () 방법과 아무런 관계가 없습니다.동적 귀속 자연 바퀴는 이 방법이 아니다.

좋은 웹페이지 즐겨찾기