C#知识|继承与多态

哈喽,你好啊,我是雷工!

最近该平台同步更新的速度有点跟不上,考虑要不要放弃同步,但每个平台有每个平台的特点,还是坚持更新吧,就是频率要看个人时间了。有时间就同步过来。

01 Protected

Protected关键字表示这个属性只能给"子类"使用,即只能在子类内部使用,不能通过子类对象去使用;

02 父类定义

父类

{

//公共属性

//公共方法

//私有方法(只能父类自己使用的方法)

//受保护的属性、方法(只能子类内部使用)

//父类还有一个重要的作用:父类可以提出一个未完成的方法,然后让子类去实现,也就是抽象方法

}

03 抽象方法

关键词:abstract

就是父类规范一个行为要求,具体实现由子类完成(具有强制性);

注意:

抽象方法必须放到抽象类中,但是一个抽象类,可以不包含任何抽象方法;

04 虚方法

关键词:virtual

即父类可以对这个方法有实现,但是子类也可以重写该方法;

05 子类定义

子类继承的父类如果有抽象方法,则子类必须重写抽象方法,除非子类也是抽象类。

注意:

①:重写父类的抽象方法,必须使用overrid关键字,而且是强制的;

②:重写父类的虚方法,不是强制的;

06 虚方法的使用

在子类中,子类可以直接完全使用虚方法的内容,也可以完全不使用虚方法的内容,还可以同时继续使用虚方法的内容;

注意:

①:抽象方法是不可能被调用的,只有子类重写的方法被调用。

②:父类虚方法是否被调用,取决于子类是否重写和是否调用;

07 多态

多态是面向对象编程语言的特性;

特点是:当我们调用者使用多态机制的时候,可以不关心具体的实现;

例如想调用一种行为,但是这种行为可能有多重表现,而具体如何表现,编写程序时是无法知晓的,只有程序运行的时候才能确定,这个行为是虚拟机本身特有的;

多态就是一种灵活的扩展的体现;

多态本质:一种类型,多种行为;

多态实现方法:

①:父类类型做方法参数类型(里氏替换原则的典型应用),会根据传入的子类类型去调用对应重写的方法;

②:父类类型作为方法返回值类型,实际返回的是子类对象;

通过多态的应用,面向抽象编程,可以让程序的扩展性大大增强;

特别注意:

多态的行为,只能限于父类中的抽象方法或虚方法;

多态的实现:

父类定义抽象方法或虚方法,不同子类分别重写抽象方法或虚方法即可。

08 后记

通过学习先对继承和多态有个认识,当时或许还比较迷糊,但是没关系,随着学习案例的应用,在某一天再回想起来这节的内容会有豁然开朗的感觉;

学习的过程很多都是要经历这样的过程,初始-了解-迷糊-应用-豁然开朗-融会贯通;

大家可以在留言区留下自己学习时的感受,更多相关话题也可以在交流群内畅所欲言。

相关推荐
charlie1145141911 分钟前
C++ STL CookBook
开发语言·c++·stl·c++20
袁袁袁袁满1 分钟前
100天精通Python(爬虫篇)——第113天:‌爬虫基础模块之urllib详细教程大全
开发语言·爬虫·python·网络爬虫·爬虫实战·urllib·urllib模块教程
ELI_He9997 分钟前
PHP中替换某个包或某个类
开发语言·php
m0_7482361115 分钟前
Calcite Web 项目常见问题解决方案
开发语言·前端·rust
倔强的石头10623 分钟前
【C++指南】类和对象(九):内部类
开发语言·c++
ProtonBase26 分钟前
如何从 0 到 1 ,打造全新一代分布式数据架构
java·网络·数据库·数据仓库·分布式·云原生·架构
Watermelo61727 分钟前
详解js柯里化原理及用法,探究柯里化在Redux Selector 的场景模拟、构建复杂的数据流管道、优化深度嵌套函数中的精妙应用
开发语言·前端·javascript·算法·数据挖掘·数据分析·ecmascript
乐之者v33 分钟前
leetCode43.字符串相乘
java·数据结构·算法
半盏茶香2 小时前
在21世纪的我用C语言探寻世界本质 ——编译和链接(编译环境和运行环境)
c语言·开发语言·c++·算法
Evand J3 小时前
LOS/NLOS环境建模与三维TOA定位,MATLAB仿真程序,可自定义锚点数量和轨迹点长度
开发语言·matlab