static void Main(string[] args) { #region abstract example ////var vehicle = new Vehicle(); Vehicle car = new Car(); Vehicle bike = new MotorBike(); car.Gas(); bike.Gas(); car.SwitchGear(); bike.SwitchGear(); Console.WriteLine(); #endregion #region override virtual new Singer bariton = new Bariton(); bariton.Sing(); Singer tenor = new Tenor(); tenor.Sing(); Console.WriteLine(); #endregion #region avoid if else List <Employee> employees = new List <Employee> { new Developer(), new Tester(), new Manager(), new Developer() }; foreach (var employee in employees) { var sallary = employee.GetSallary(); if (employee is Tester) { sallary *= 1.5; } else if (employee is Developer) { sallary *= 2; } else if (employee is Manager) { sallary *= 10; } Console.WriteLine("{0} sallary: {1}", employee.ToString(), sallary); } Console.WriteLine(); #endregion }