using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace li2_5 { public class Employee { private double bsalary=1500; private double psalary; private int n; public int N { get { return n; } set { n = value; } } public virtual double Esalary() { Console.Write("请输入该员工进公司的年数:"); N = int.Parse(Console.ReadLine()); psalary =bsalary*(Math.Pow((1+0.2),(N-1))); return psalary; } } public class BachelorEmp : Employee { public override double Esalary()//通过在与基类虚方法同名的方法前使用override关键字,实现对基类虚方法的重写。 { Console.WriteLine("计算机本科生员工的工资"); return 1.5 * base.Esalary(); } } public class MasterEmp : Employee { public override double Esalary() { Console.WriteLine("计算机硕士生员工的工资"); return 2 * base.Esalary(); } } class Program { static void Main(string[] args) { Employee e1 = new Employee(); Console.WriteLine("该员工的实际工资为:{0}", e1.Esalary()); BachelorEmp b1 = new BachelorEmp(); e1 = b1;//使得e1和b1具有相同的派生类类型BachelorEmp Console.WriteLine("该员工的实际工资为:{0}", e1.Esalary()); MasterEmp m1 = new MasterEmp(); e1 = m1; Console.WriteLine("该员工的实际工资为:{0}", e1.Esalary()); } } }