
⭐以下内容可能有误请仔细甄别1.继承什么是继承通俗说继承就是让一个类“拥有”另一个类的所有成员字段、属性、方法不用重复写代码。被继承的类叫做父类/基类继承的类叫做子类/派生类一、基本语法如下使用效果二、核心规则1.C# 是单继承一个子类只允许继承一个父类一个孩子只能有一个爹不允许同时继承多个类2.可继承的成员父类的publicprotected成员子类可以进行访问private成员子类不允许访问这是老爹的隐私啊喂3.构造函数不被继承父类的构造函数子类不会继承但子类实例化时会先调用父类的无参构造函数再调用自己的构造函数。三、介绍一下base关键字base的第一个运用场景调用父亲的方法/属性第二个运用场景调用父亲的有参构造函数默认子类只会调用父类的无参构造。如果父类只有有参构造子类必须用 base 显式调用上图执行顺序 实例化 Student 时 → 先执行 Person 的有参构造 → 再执行 Student 的构造。四、如果一个类不想被继承即密封类sealed就是在类前面加上sealed关键字丁克一族五、完整的示例运行输出如下2.static静态成员与静态构造函数核心本质区别• 实例成员你之前写的 Name、Age、普通构造属于具体对象。每 new 一个 Person就有一份独立的数据对象之间互不影响。• 静态成员加 static 关键字属于类本身。整个类只有一份数据所有对象共享同一个值。三条规则1. 调用方式静态成员必须用 类名.成员名 访问如 Person.TotalCount不能用 this也不能通过对象变量访问。2. 执行时机静态构造函数在第一次使用该类时自动触发全程只执行一次实例构造函数每 new 一次就执行一次。3.访问权限静态方法/构造里不能直接访问实例成员没有对象上下文实例方法里可以自由访问静态成员。那么静态成员有什么用呀1.全局统计与计数对应你刚写的计数器例子比如统计一共创建了多少个Person对象、游戏里生成了多少个敌人。• 如果不用static每个对象都有一份独立的计数new 100个对象就有100个互不相关的数字永远统计不出总数。• 用了static全类只有这一份数据所有对象共享、共同累加随时用 类名.属性名 就能拿到全局总数。2.通用工具方法你天天用的 Console.WriteLine()、Math.Sqrt() 全是静态方法。这类方法和「具体对象」完全无关就是一个通用工具功能。写成静态的好处是不用new对象直接通过类名调用既省事又节省内存不用每次使用都创建一个实例。确实哈3.全局配置与常量比如程序的默认配置、全局参数比如游戏的最大帧率、默认移动速度。写成静态属性后整个项目所有地方都读取同一个值修改时只改一处就全局生效不用每个类里都重复存一份配置。说白了就是有些数值是整个游戏/程序统一的不属于任何一个单独的对象比如说你原本设置的重力是0.9你想改成另一个那你得把所有文件里面的都改了4.单例模式开发核心设计模式比如管理器、全局控制器要求整个程序里只能有一个实例。核心实现就是靠静态字段存储唯一的那个对象让所有地方都能通过 类名.Instance 直接访问不用来回传递对象引用这是中大型项目的基础写法。还是拿游戏举例子比如「音频管理器」负责播放所有背景音乐、音效。整个游戏有一个音频管理器就够了总不能每个角色都new一个自己的音频管理器吧既浪费内存还容易出现多个声音打架的问题。