zoukankan      html  css  js  c++  java
  • 虚方法与多态

    虚方法(virtual)
    virtual关键字用地修饰方法、属性、索引器或事件声明,并且允许在派生类中重写这些对象。
    virtual表示此方法是一个虚方法,override表示要覆盖主线类的虚方法,对方法进行重写。
    他们经常一起配合使用,这样就形成了多态。
    多态(Polymorphism)
    多态是指两个或多个属于不同类的对象,对同一个消息做出不同响应的能力。
    多态概念的举例
    ●外科医生 cut
    ●发型师 cut
    ●演员  cut
    当外科医生接收到cut指令时,外科医生会对病人进行手术
    当发型师收到cut指令时,发型师会对顾客修剪头发
    当演员收到cut指令时,演员会停止表演。

    这个就是多态,对同一事件发出不同响应的能力。
    使用举例

    using System;
    class Employee
    {
    	protected string _name;
    	public Employee(){}
    	public Employee(string name)
    	{
    		_name=name;
    	}
    	public virtual void StartWork()//rivtual常与overrider一起使用
    	{
    		Console.Write(_name+"开始工作");
    	}
    }
    class Manager:Employee
    {
    	public Manager(string name):base(name){}
    	//此构造函数调用了基类的构造函数,把string name的name传递到base(name)的构造函数里面
    	//从而,Manager类里的构造函数会执行Employee中的构造函数
    	public override void StartWork()
    	{
    		Console.WriteLine("给员工下达任务");
    	}
    	
    }
    class Secretary:Employee
    {
    	public Secretary(string name):base(name){}
    	public override void StartWork()
    	{
    		Console.WriteLine("协助经理");
    	}
    }
    class Test
    {
    	static void Main()
    	{
    		Employee[] emp=new Employee[3];
    		emp[0]=new Manager("tom");
    		emp[1]=new Secretary("lilly");
    		emp[2]=new Secretary("mary");
    		Console.WriteLine("we工作开始!");
    		foreach(Employee e in emp)
    		{
    			e.StartWork();
    		}
    	}
    }
    

    此代码功能用多态实现有很多好处,例如这样会非常便于维护。我们程序里有员工、经理、秘书,如果再添加
    一个成员业务员则只需新增一个关于业务员的类,此类继承至员工类,相关的工作事件可以用override重
    载方法实现。

  • 相关阅读:
    mac电脑 显示隐藏文件 取消显示隐藏文件
    xcode 无法下载 ios 8.3 simulator 提示权限不够
    socket 通讯 端口绑定 问题 解答
    description方法 oc 就是NSLog使用
    init 和 initialize 差距在哪里 oc
    类本质的是? 类的加载过程?
    分类和继承的区别 oc
    Masonry的简单使用
    cocopods
    swift UITextField
  • 原文地址:https://www.cnblogs.com/lhard/p/2138074.html
Copyright © 2011-2022 走看看