刘铁猛C#入门 026 重写与多态

类的继承

  • 类成员的"横向扩展"(成员越来越多)
  • 类成员的"纵向扩展"(行为改变,版本增高)
  • 类成员的隐藏(不常用)
  • 重写与隐藏的发生条件:函数成员,可见,签名一致
    • 函数成员:方法 、属性
    • 可见:父类修饰符是public protected 子类 override 父类virtual或abstract 修饰符
    • 签名一致:相同的签名(相同的名字、参数列表、返回类型)。

重写示例

静态绑定(早期绑定)

当您调用一个非虚方法时,编译器在编译时就已经确定了调用哪个方法。即使您通过基类的引用指向一个派生类的对象,编译器也会根据引用变量的类型来决定调用哪个方法。这种绑定方式被称为静态绑定或早期绑定。

动态绑定(晚期绑定)

当您调用一个虚方法时,实际调用哪个方法取决于对象的实际类型,而不是引用变量的类型。这意味着,即使您通过基类的引用指向一个派生类的对象,最终调用哪个方法是在运行时决定的。这种绑定方式被称为动态绑定或晚期绑定。

多态(polymorphism)

其于重写机制(virtual>override)

函数成员的具体行为(版本)由对象决定

回顾:C#语言的变量和对象都是有类型的,所以会有"代差"

相关推荐
报错小能手14 分钟前
STL_unordered_map
开发语言·c++·哈希算法
CreasyChan29 分钟前
C#特性(Attributes)详解
开发语言·c#
历程里程碑32 分钟前
C++ 9 stack_queue:数据结构的核心奥秘
java·开发语言·数据结构·c++·windows·笔记·算法
csbysj202039 分钟前
JavaScript AI 编程助手
开发语言
t1987512843 分钟前
基于MATLAB的线性判别分析(LDA)降维算法实现方案
开发语言·算法·matlab
weixin_462446231 小时前
nodejs 下使用 Prettier 美化单个 JS 文件(完整教程)
开发语言·javascript·ecmascript
醇氧1 小时前
【Windows】从守护到终结:解析一个 Java 服务的优雅停止脚本
java·开发语言·windows
reasonsummer1 小时前
【办公类-18-07】20251215(Python)“口腔检查涂氟信息”批量生成打印(区名、学号、姓名、学校、班级、身份证、户籍、性别、民族)
开发语言·python
小鹿学程序1 小时前
FileZilla连接到虚拟机
java·服务器·开发语言
未来魔导1 小时前
Gin版本的路由总结
开发语言·llm·gin·路由