virtual 키워드는 메서드, 속성, 인덱서 또는 이벤트 선언을 한정하는 데 사용되며 파생 클래스에서 재정의될 수 있습니다

.예를 들어, 다음 메서드는 이 메서드를 상속하는 클래스에 의해 재정의될 수 있습니다.

using System;
class TestClass
{
    public class Dimensions
    {
        public const double PI = Math.PI;
        protected double x, y;
        public Dimensions()
        {
        }
        public Dimensions(double x, double y)
        {
            this.x = x;
            this.y = y;
        }
		//재작성 할수 있습니다. *******************
        public virtual double Area()
        {
            return x * y;
        }
    }

virtual 한정자는 static, abstract, private 또는 override 한정자와 함께 사용할 수 없습니다.

 

위의 TestClass를 아래클래스 에서 재정의 하고 있습니다.

public class Circle : Dimensions
    {
        public Circle(double r) : base(r, 0)
        {
        }

        public override double Area()
        {
            return PI * x * x;
        }
class Sphere : Dimensions
    {
        public Sphere(double r) : base(r, 0)
        {
        }

        public override double Area()
        {
            return 4 * PI * x * x;
        }
    }

+ Recent posts