Virtual Accessor : virtual « Class « C# / CSharp Tutorial






using System;

public class Class1 {
    public static void Main(string[] strings) {
        MyMoney dm = new MyMoney();
        dm.CurrencyValue = 2.50M;
        Console.WriteLine(dm.CurrencyValue);

        Dollar dollar = new Dollar();
        dollar.InitDollar(1.2M);

        dollar.EuroValue = dm.EuroValue;
        Console.WriteLine(dollar.CurrencyValue);

        dollar.CurrencyValue = 2 * dollar.CurrencyValue;
        dm.EuroValue = dollar.EuroValue;
        Console.WriteLine(dm.CurrencyValue);

    }
}

abstract public class Currency {
    private decimal mEuroValue = 0M; // [Euro]

    public abstract decimal CurrencyValue { get; set; }
    public decimal EuroValue {
        get {
            return mEuroValue;
        }
        set {
            mEuroValue = value;
        }
    }
}

public class MyMoney : Currency {
    private static decimal mDMtoEuro = 1.96M;
    public override decimal CurrencyValue {
        get { return EuroValue * mDMtoEuro; }
        set { EuroValue = value / mDMtoEuro; }
    }
}

public class Dollar : Currency {
    public decimal mDollartoEuroConversion;

    public void InitDollar(decimal mDollartoEuro) {
        mDollartoEuroConversion = mDollartoEuro;
    }

    public override decimal CurrencyValue {
        get { return EuroValue * mDollartoEuroConversion; }
        set { EuroValue = value / mDollartoEuroConversion; }
    }
}








7.23.virtual
7.23.1.Virtual Methods and Overriding
7.23.2.Override virtual functions
7.23.3.new virtual method
7.23.4.Override virtual method
7.23.5.Define virtual function in base and its subclass
7.23.6.Class inheritance with virtual method
7.23.7.Illustrates versioning: virtual/new
7.23.8.Illustrates polymorphism
7.23.9.Demonstrate a virtual method.
7.23.10.When a virtual method is not overridden, the base class method is used
7.23.11.Virtual method in a multilevel hierarchy
7.23.12.Use virtual methods and polymorphism.
7.23.13.Virtual Accessor