C Sharp 의 Virtual, Override 와 new 키워드 이해

C \ # 에서 파생 류 는 기본 적 인 방법 과 동명 의 방법 을 포함 할 수 있 습 니 다.
  • 기본 클래스 방법 은 virtual 로 정의 해 야 합 니 다.
  • 파생 클래스 의 방법 앞 에 new 나 override 키워드 가 없 으 면 컴 파일 러 는 경 고 를 보 냅 니 다. 이 방법 은 new 키워드 가 존재 하 는 것 처럼 실 행 됩 니 다.
  • 파생 류 의 방법 앞 에 new 키 워드 를 가지 고 있다 면 이 방법 은 기본 클래스 에 독립 하 는 방법 으로 정의 된다.
  • 파생 류 의 방법 앞 에 override 키워드 가 있 으 면 파생 류 의 대상 은 기본 적 인 방법 이 아 닌 이 방법 을 호출 합 니 다.
  • 파생 류 에서 base 키 워드 를 사용 하여 기본 클래스 를 호출 할 수 있 습 니 다.
  • override, virtual, new 키 워드 는 속성, 색인 기, 이벤트 에 도 사용 할 수 있 습 니 다.
  • using System;
    using System.Collections.Generic;
    
    
    public class Car
    {
    
        public virtual void DescribeCar()
        {
            Console.WriteLine("Base Car!");
        }
    
    }
    
    
    public class ConvertibleCar : Car
    {
        public new void DescribeCar()
        {
            base.DescribeCar();
            Console.WriteLine("Convertible Car!");
        }
    }
    
    public class DerivedConvertibleCar : ConvertibleCar
    {
        public new void DescribeCar()
        {
            base.DescribeCar();
            Console.WriteLine("DerivedConvertibleCar Car!");
        }
    }
    
    
    public class DerivedMinivan : Minivan
    {
        public override void DescribeCar()
        {
            base.DescribeCar();
            Console.WriteLine("DerivedMinivan Car!");
        }
    }
    public class Minivan : Car
    {
        public override void DescribeCar()
        {
            base.DescribeCar();
            Console.WriteLine("Minivan Car!");
        }
    }
    
    
    public class CarCollections
    {
        public static void Main()
        {
            List
      
        cars = new List
       
        (); cars.Add(new Car()); cars.Add(new ConvertibleCar()); cars.Add(new Minivan()); cars.Add(new DerivedConvertibleCar()); cars.Add(new DerivedMinivan()); foreach (Car car in cars) car.DescribeCar(); } } 
       
      

    출력 결과:
    Base Car!【Car】Base Car!【ConvertibleCar】Base Car!Minivan Car!【Minivan】Base Car!【DerivedConvertibleCar】Base Car!Minivan Car!DerivedMinivan Car!【DerivedMinivan 】
    new 를 사용 하 는 것 과 override 를 사용 하 는 효과 가 다르다 는 것 을 볼 수 있 습 니 다.

    좋은 웹페이지 즐겨찾기