static void Main(string[] args) { TemporaryEmployee temporaryEmployee = new TemporaryEmployee(); temporaryEmployee.Name = "Niraj shukla"; temporaryEmployee.Salary = 1000; temporaryEmployee.TempId = 201; double Sal = temporaryEmployee.CalculteSalary(temporaryEmployee.Salary); Console.WriteLine($"Id{temporaryEmployee.TempId} NAME : {temporaryEmployee.Name} SALARY:{Sal}"); Console.WriteLine("--------------------------------"); PermanentEmployee permanent = new PermanentEmployee(); double SalForPermenant = permanent.CalculteSalary(temporaryEmployee.Salary); Console.WriteLine($"Salary for permanent:{SalForPermenant}"); Console.WriteLine("--------------------------------"); Console.ReadLine(); }
static void Main(string[] args) { //Making employees Employee ann = new Employee("Ann", 45, 25); Employee bob = new Employee("Bob", 35, 30); //Make permanment Employee PermanentEmployee chris = new PermanentEmployee("Chris", 40, 20, 0.1m); //Employee emp = chris; // you are allowed to downgrade //PermanentEmployee pemp = (PermanentEmployee) ann; //not allowed to upgrade - causes InvalidCastException PermanentEmployee dana = new PermanentEmployee("Dana", 37.5m, 45, 0.15m); //Console.WriteLine(ann); //Console.WriteLine(bob); //Console.WriteLine(chris); //Console.WriteLine(emp); //Console.WriteLine(pemp); //not allowed to upgrade Console.WriteLine("\n\nProcess Payroll"); List <Employee> payroll = new List <Employee>(); //empty list - use the base class payroll.Add(ann); payroll.Add(bob); payroll.Add(chris); payroll.Add(dana); decimal payrollTotal = 0; foreach (Employee e in payroll) { payrollTotal += e.CalculatePay(); //POLYMORPHISM - same code yields different results depending on object's type Console.WriteLine(e); } Console.WriteLine("\nPayroll Total: " + payrollTotal.ToString()); Console.Write("\n\nPress any key"); Console.ReadKey(); }