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