zoukankan      html  css  js  c++  java
  • 【C#】什么时候使用virtual什么时候使用abstract

    一、C#中virtual与abstract的区别

    C#的virtual & abstract经常让人混淆,这两个限定词都是为了让子类进行重新定义,覆盖父类的定义。但是用法上差别很大。

    a)     virtual修饰的方法必须有方法实现(哪怕只有一对大括号),abstract修饰的方法不能有实现。

    b)    virtual可以被子类重写,abstract必须被子类重写

    c)     如果类中的某一函数被abstact修饰,则类名也必须用abstact修饰

    d)    Abstract修饰的类不能被创建实例。

    e)     C#中如果准备在子类重写父类的方法,则该方法在父类中必须用virtual修饰,在子类中必须用overide修饰。

    注:用abstract修饰的类只能被继承不能够被实例化。

    二、什么时候使用virtual什么时候使用abstract

    a)  virtual重点是实现多态,同一个方法能做不同的事情,也就是当一个方法会有不同的操作的时候要用virtual,例如:支付方法 pay(),可能通过微信去支付、也可能通过支付宝或者其他方式去支付,这个时候定义pay()方法的时候最好是用virtual修饰。

    b) 作为一个必须存在的方法的时候用abstract,比如要定义一个人类对象Class Person{}和一个鸟类对象Class Bird{},人是动物,鸟也是动物,所以一般会先定义一个共同的基类Class animal{},然后让人类和鸟类对象都继承这个基类。这个基类可以有共通的属性和方法,比如行走方法walk(),发声方法voice(),在基类中这两个方法都是不需要实现的,只需要在PersonBird类中实现就可以了【Person和Bird类必需要实现这两个方法,这也保证了所有继承animal类的类都需要有walk()和voice()方法】,所以定义walk()voice()方法的时候可以用abstract修饰

  • 相关阅读:
    李彦宏最新演讲:移动互联网的时代已经结束了
    表值函数 详解
    SQL中PIVOT 行列转换
    将WeX5部署到自己的Tomcat服务器上
    Cordova webapp实战开发:(2)认识一下Cordova
    Cordova webapp实战开发:(1)为什么选择 Cordova webapp?
    甲有5套房,不上班,靠收房租生活;乙有1套房,上班赚工资……(启示)
    Ubuntu 16.04下为Android编译OpenCV 3.1.0 Manager
    Dual Camera Info
    OpenCV 3.1
  • 原文地址:https://www.cnblogs.com/stgp/p/6233359.html
Copyright © 2011-2022 走看看