• c# --- 继承


    1. 实现继承其实就是类的继承 ---- 父类(基类),子类(派生类)

    2.子类中重写父类函数的实现代码后,再通过子类调用这个函数的话,就能够执行重写后的代码了

    3.c#不支持多重类继承,但支持多重接口继承

    4.在c#中每一个类都必须具有一个父类,且只能有一个父类。当你没有给一个类指定父类的时候,编译器就会给这个类指定一个默认的父类 Object ,如果给一个类指定了一个父类后,Object父类就会被替代,然后新的父类不会出现被替代的情况。


    第一种继承 -- 实现继承(类继承)

    继承语法:

     1.在c#中也和c++一样,子类只能够访问父类中具有public权限和protected权限的成员,无法访问父类中具有private权限的成员

    2.在一个子类的成员函数中访问从父类继承过来的成员有两种方式:

    一通过this对象来访问 --- this对象就是当前调用这个函数的对象

    二.通过base对象来访问 --- base对象的特点是只能够访问子类继承过来的父类的可访问成员

     3.重写父类方法的方式有两种:一.虚方法;二.隐藏方法

    一.虚方法 --- 可以用c++的老式方法

    1.利用虚方法重写的前提是父类中被重写的方法必须被virtual修饰为虚方法:

    修饰的语法:就是在方法的访问权限和方法的返回类型之间插入一个virtual

    当我们将父类中要被重写的方法修饰为虚方法之后,我们就能够在子类中对这个方法进行重写了

    2.在子类重写时先输入 override 关键字然后按一下空格,然后就能够选择可被重写的父类成员函数了。重写完之后,我们通过子类创建的对象在调用被重写的函数的时候就会直接调用子类中重写后的函数,而不是原本父类中的函数

     3.这里是c#中的虚函数写法,当然c#中也能够实现父类指针接收子类对象在堆区的内存地址,然后通过父类指针调用子类中重写好的函数这种方法,不过不如直接用c#改进后,直观简洁

    (ps:在c#中要将指针改为引用 --- 指针和引用的共同点:指针和引用都能够承接地址

    指针和引用区别:如果要通过指针访问和操作其指向的内存空间中的数据的话需要我们用解引用额方式,而引用只需要我们点操作符/直接赋值的方式就能够访问)

    二.隐藏方法 --- 不可以用c++的老式方法

    隐藏方法其实很简单:

    1.首先我们不需要将父类中被重写的函数修饰为虚函数(啥也不用变)

    2.然后我们需要改变的就是在子类中重写父类函数的时候,我们要在子类重写的函数的访问权限和返回类型之间加上一个new关键字,如下图:

    加上一个new关键字后,编译器就会将子类继承过来的要被重写的父类函数隐藏,只留下子类重写好的父类函数

    此时,我们通过子类能够调用的只有它重写后的父类函数(如果要用调用父类中被重写的成员函数的话只能够用base对象来访问)

    那么隐藏方法和虚方法之间的区别是什么呢?

    答案就是如果我们采用隐藏方法的话,如果我们使用虚方法的第二种形式将会失败,父类引用哪怕接收了子类对象地址也只会调用自己的成员函数。


  • 相关阅读:
    10.3 调试事件转存进程内存
    数据结构与算法之堆: Leetcode 451. 根据字符出现频率排序 (Typescript版)
    C_plus_侯捷课件笔记
    golang——接口
    成功解决OSError: [WinError 1455] 页面文件太小,无法完成操作
    智能家居系统
    stable-diffusion-webui之api
    千字文||无聊又数了一下千字文字数
    【日常总结】Swagger-ui 导入 showdoc (优雅升级Swagger 2 升至 3.0)
    双向交错CCM图腾柱无桥单相PFC学习仿真与实现(4)一些优化总结
  • 原文地址:https://blog.csdn.net/qq_51947882/article/details/126373276