zoukankan      html  css  js  c++  java
  • Abstract和Virtual

    在C#的学习中,容易混淆virtual方法和abstract方法的使用,现在来讨论一下二者的区别。

     

    它们有一个共同点:

    二者都是用来修饰父类的,只能作为基类使用,通过覆盖父类的定义,让子类与override的配合重新定义。

    如果用来修饰方法,前面必须添加public。毕竟加上virtual或abstract就是让子类重新定义的,而private成员是不能被子类访问的。


    virtual是“虚拟的”,abstract是“抽象的"

     

    abstract可以修饰类和方法。

    virtual在C#中用于修饰方法和属性。

     

    abstract修饰的类叫做抽象类,抽象类不能实例化。

    抽象类的构造函数只能在其子类的构造函数中调用,不管是否是抽象类,无参构造自动调用,带参数的构造函数必须显式调用

    abstract修饰的方法不能有实现体,相当于纯虚函数

    如,

    public abstract Light {

        public  void  turnon()

        {

            ...

        }

        public abstract  void  turnoff();

    };

    抽象方法只能在抽象类中,如果类成员被abstract修饰,则该类前必须添加abstract。

    子类如果不是abstract,则其中一定要有抽象方法的具体实现。

    如果子类没有实现抽象基类中所有的抽象方法,则子类也必须定义成一个抽象类。

    virtual 修饰的方法可以在一般类中。

    其修饰的方法在父类中一定要有实现,即使只是一对大括号。

    public  Light {

    public  virtual  void  turnon() {};

    };

  • 相关阅读:
    处在什么都想学,却又不知道怎么学的处境
    启动MongoDB shell客户端会什么会一闪而过
    Socket.io发送消息含义
    轮询、长轮询与Web Socket的前端实现
    org.apache.commons.lang3.StringUtils类中isBlank和isEmpty方法的区别
    JS学习笔记10_Ajax
    JS学习笔记9_JSON
    JS学习笔记8_错误处理
    JS学习笔记7_表单脚本
    JS学习笔记6_事件
  • 原文地址:https://www.cnblogs.com/sylone/p/6098013.html
Copyright © 2011-2022 走看看