黑马程序员技术交流社区

标题: 虚方法实现多态 [打印本页]

作者: 郑朝明    时间: 2013-1-23 10:27
标题: 虚方法实现多态
using System;
class Employee//员工类
{
    protected string _name;//员工姓名
    public Employee() { }//构造函数
    public Employee(string name)//构造函数为员工姓名赋值
    {
        _name = name;
    }
    public virtual void StatWork()//开始工作的虚方法
    {
        Console.Write(_name + "开始工作:");
    }
}
class Manager:Employee//经理类
{
    public Manager(string name):base(name){}//把参数传递到基类构造函数
    public override void StatWork()//重写经理工作的方法
    {
        base.StatWork();//一般情况下使用虚函数他的子类都应该调用基类被覆盖的方法
        Console.WriteLine("给员工下达任务");
    }
}
class Secretary:Employee//秘书类
{
    public Secretary(string name) : base(name) { }
    public override void StatWork()
    {
        base.StatWork();
        Console.WriteLine("协助经理");
    }
}
class Seller : Employee
{
    public Seller(string name) : base(name) { }
    public override void StatWork()
    {
        base.StatWork();
        Console.WriteLine("销售产品");
    }
}

class Test
{
    static void Main()
    {
        Employee[] emp = new Employee[4];//定一个类数组相当于4人的公司
        emp[0] = new Manager("张三");//实例经理张三
        emp[1] = new Secretary("李四");//实例秘书李四
        emp[2] = new Seller ("王五");//实例销售王五
        emp[3] = new Seller("马六");
        Console.WriteLine("早上8点,开始工作");
        foreach (Employee e in emp)
        {
            e.StatWork();
        }
        Console.ReadKey();
    }
}
作者: 王晨    时间: 2013-1-23 10:50
学写了,谢谢分享
作者: 高浩    时间: 2013-1-23 15:01
虚方法定义在除密封类外都可以,虚方法不一定必须重写,而且必须要有方法体
抽象方法只能定义在抽象类中,抽象方法不能有方法体,必须被非抽象子类重写




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2