Mega Code Archive

 
Categories / C# / Class Interface
 

Override Properties

using System; using System.Collections;     abstract class Employee {     protected Employee(int employeeId, int hoursWorked)     {         this.employeeId = employeeId;         HoursWorked = hoursWorked;     }         protected int employeeId;     public int EmployeeId     {         get { return employeeId; }     }         protected int HoursWorked;         protected double hourlyCost = -1; // dummy init value     public abstract double HourlyCost     {          get;     } }     class ContractEmployee : Employee {     public ContractEmployee(int employeeId, double hourlyWage,         int hoursWorked)         : base(employeeId, hoursWorked)     {         HourlyWage = hourlyWage;     }         protected double HourlyWage;     public override double HourlyCost     {          get          { return HourlyWage; }     } }     class SalariedEmployee : Employee {     public SalariedEmployee(int employeeId, double salary,         int hoursWorked)         : base(employeeId, hoursWorked)     {         Salary = salary;     }         protected double Salary;     public override double HourlyCost     {          get          {              return (Salary / 52) / HoursWorked;          }     } }     class OverrideProperties {     public static ArrayList employees = new ArrayList();       public static void PrintEmployeesHourlyCostToCompany()     {         foreach (Employee employee in employees)         {             Console.WriteLine("{0} employee (id={1}) costs {2}" +                 " per hour", employee, employee.EmployeeId,                 employee.HourlyCost);         }     }         public static void Main()     {         ContractEmployee c  = new ContractEmployee(1, 50, 40);         employees.Add(c);             SalariedEmployee s =             new SalariedEmployee(2, 100000, 65);         employees.Add(s);             PrintEmployeesHourlyCostToCompany();             Console.ReadLine();     } }