zoukankan      html  css  js  c++  java
  • viturl abstract override 的再理解


    对象初始化顺序
    派生类的属性或字段----->基类的属性或字段----->基类的构造函数----->派生类的构造函数                                    

      a 先变量后构造函数   
      b 先静态化后实例化
      c 先基类后派生类构造函数


    c# viturl abstract override 的理解

    virtual标识的方法是允许派生类重写此方法,基类方法中已经有方法体实现,派生类中采有override来标识,重写此方法;
    abstract标识的方法是允许派生类重写此方法,基类方法中没有方法体实现,派生类中采有override来标识,重写此方法,抽象方法只能包含在抽象类中;
    override标识的方法允许派生类重写此方法,基类方法是重写其父类的方法,派生类中采有override来标识,重写此方法;
    派生类方法用NEW标识的,派生类方法隐藏基类的方法;

    /*重载,覆盖,隐藏之间的区别
    *
         重载(overload)用于同一类中的成员函数,这个行为称为多态,其特征为:
         * 1)在同一类中
         * 2)相同的函数名
         * 3)参数不同(包括参数类型不同,或参数个数不同,或两者都不同,注意:和返回值没关系)
         * 4)和是否虚函数无关
         覆盖(override)是指派生类函数覆盖基类函数,其特征为:
         * 1)不同的范围(分别位于派生类与基类)
         * 2)相同的函数名称
         * 3)参数相同
         * 4)基类函数必须是虚函数
         隐藏(hide)是指派生类的函数屏蔽了与其同名的基类函数,其特征为:
         * 1)不同的范围(分别位于派生类与基类)
         * 2)相同的函数名
         (3)若参数不同,基类函数无virtual关键字,基类函数将会被隐藏。(因为派生类和基类不在同一范围,所以是隐藏而不是重载);
        ()若参数不同,基类函数有virtual关键字。基类函数将会被隐藏。(因为派生类和基类不在同一范围,所以是隐藏而不是重载;因为参数不同,所以是隐藏而不是覆盖);
        ()若参数相同,基类函数无virtual关键字。基类函数将会被隐藏。(因为基类函数不是虚函数,所以是隐藏而不是覆盖)。
        ()若参数相同,基类函数有virtual关键字。如果基类函数有多个重载版本,且派生类并没有重写所有的同名虚函数,当在派生类中调用函数时,基类中未被重写的虚函数将被隐藏。(当然,被重写的函数就是覆盖了)。

    * 注意: 如果想在派生类中调用基类中的被隐藏的函数,可以在派生类中填写如下代码:using Base::Fun2

    作者:不老神仙
    本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
  • 相关阅读:
    格式化日期---获取年月日升级版
    时间格式转换
    Python求两个有序数组的中位数的几种方法
    pyinstaller打包时包含资源文件
    PyQt5自定义组件之飞机水平仪
    Python获取磁盘剩余空间
    PyQt5自定义组件之信号强度
    Python字典的实现原理
    获取元素相对浏览器窗口的偏移坐标
    HTML/JavaScript实现地图以鼠标为圆心缩放和移动
  • 原文地址:https://www.cnblogs.com/allanbolt/p/1790455.html
Copyright © 2011-2022 走看看