Override virtual functions : virtual « Class « C# / CSharp Tutorial






using System;

class Employee
{
    public Employee(string name, float billingRate)
    {
        this.name = name;
        this.billingRate = billingRate;
    }
    // function now virtual
    virtual public float CalculateCharge(float hours)
    {
        return(hours * billingRate);
    }
    // function now virtual
    virtual public string TypeName()
    {
        return("Employee");
    }
    
    private string name;
    protected float billingRate;
}

class Manager: Employee
{
    public Manager(string name, float billingRate) :
    base(name, billingRate)
    {
    }
    // overrides function in Employee
    override public float CalculateCharge(float hours)
    {
        if (hours < 1.0F)
        hours = 1.0F;        // minimum charge.
        return(hours * billingRate);
    }
    // overrides function in Employee
    override public string TypeName()
    {
        return("Civil Employee");
    }
}
class Test
{
    public static void Main()
    {
        Employee[]    earray = new Employee[2];
        earray[0] = new Employee("A", 15.50F);
        earray[1] = new Manager("B", 40F);
        
        Console.WriteLine("{0} charge = {1}",
        earray[0].TypeName(),
        earray[0].CalculateCharge(2F));
        Console.WriteLine("{0} charge = {1}",
        earray[1].TypeName(),
        earray[1].CalculateCharge(0.75F));
    }
}
Employee charge = 31
Civil Employee charge = 40








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