当前位置: 首页 > news >正文

C#零基础通关第五篇:吃透属性、继承与多态,彻底精通面向对象三大特性

上一篇我们彻底搞懂了类与对象、构造函数、封装思想,成功从“堆砌代码的面向过程”迈入了“模块化的面向对象编程”。

我们已经学会了自定义类、实例化对象、私有化数据保护数据安全,但想要写出企业级标准代码、实现代码高度复用、适配复杂业务层级,仅靠封装远远不够。

面向对象编程(OOP)有三大黄金核心特性:封装、继承、多态。上一篇我们掌握了封装,本篇将补齐剩余两大核心,同时精讲C#专属的**属性(Property)**语法。

属性是封装的现代化升级版,继承是代码复用的核心,多态是项目解耦、灵活开发的关键。学完本篇,你将完整掌握C#面向对象全部核心能力,告别初级新手,迈入标准开发行列。

一、前置回顾:为什么要学这三个知识点?

我们先结合之前的代码,梳理痛点,明白学习的意义:

  1. 之前我们通过Get/Set方法管控私有字段,代码冗余繁琐,C#属性就是为了简化封装而生,是项目唯一标准写法;

  2. 多个相似的类(学生、老师、员工)存在大量重复字段和方法,反复编写代码浪费效率,继承可以实现代码一键复用;

  3. 同一类事物存在不同行为,需要灵活适配不同场景,多态可以实现一个接口、多种实现,让代码更灵活、易扩展。

三者结合,构成了C#所有项目、框架、游戏开发的底层基石。

二、C# 核心语法:属性(Property)——封装的终极形态

很多新手分不清字段属性,甚至混用公开字段写代码,这是项目开发的大忌。我们从零彻底理清。

1. 字段 vs 属性(核心区别)

  • 字段:类中定义的普通变量(private string _name),作用是纯存储数据,项目规范要求必须私有,禁止外部直接访问;

  • 属性:专门用来读写私有字段的特殊语法,是Get/Set方法的语法糖,简洁优雅,是C#官方推荐的唯一封装写法

2. 完整属性写法(带数据校验,企业标准)

完整属性包含私有字段 + get读取器 + set赋值器,支持数据校验,完美实现封装。

usingSystem;classStudent{// 私有字段:仅类内部可访问privatestring_name;privateint_age;// 姓名属性:控制读取和赋值publicstringName{get{// 读取数据时返回私有字段return_name;}set{// 赋值时做数据校验,过滤非法数据if(!string.IsNullOrEmpty(value)){_name=value;}}}// 年龄属性:带严格范围校验publicintAge{get=>_age;// 简化Lambda写法set{if(value>0&&value<100){_age=value;}else{Console.WriteLine("年龄输入不合法!");}}}}classProgram{staticvoidMain(){Studentstu=newStudent();// 通过属性赋值(自动触发校验)stu.Name="张三";stu.Age=18;Console.WriteLine($"姓名:{stu.Name},年龄:{stu.Age}");// 非法数据被拦截stu.Age=-10;}}

3. 自动属性(开发最常用)

如果不需要复杂数据校验,仅需封装数据,可直接使用自动属性,系统会自动隐藏生成私有字段,代码极度简洁,是日常开发高频写法。

classStudent{// 自动属性:系统自动生成私有字段publicstringName{get;set;}publicintAge{get;set;}// 只读属性:仅允许初始化,外部无法修改publicintId{get;}}

4. 核心总结

永远不要在项目中使用 public 公开字段!所有对外数据交互,统一使用属性,这是C#开发的硬性规范。

三、面向对象核心:继承(Inheritance)——代码复用神器

继承是面向对象三大特性之二,核心作用:复用已有代码,实现层级分类,杜绝代码冗余

1. 核心概念

  • 父类(基类):通用、公共的模板类,提取所有子类的共性字段和方法;

  • 子类(派生类):继承父类的所有非私有成员,同时可以扩展自己独有的字段和方法;

  • C# 继承语法:class 子类 : 父类

2. 继承实战案例

场景:老师和人员都属于“人”,都有姓名、年龄、性别,但是老师有工资、学生有成绩,通过继承实现代码复用。

usingSystem;// 父类:人类(通用共性)classPerson{publicstringName{get;set;}publicintAge{get;set;}// 通用行为publicvoidSayHello(){Console.WriteLine($"大家好,我是{Name},今年{Age}岁");}}// 子类:学生类,继承人类classStudent:Person{// 学生独有属性publicintScore{get;set;}publicvoidStudy(){Console.WriteLine($"{Name}正在认真学习,成绩:{Score}");}}// 子类:老师类,继承人类classTeacher:Person{// 老师独有属性publicdoubleSalary{get;set;}publicvoidTeach(){Console.WriteLine($"{Name}正在授课,月薪:{Salary}");}}classProgram{staticvoidMain(){// 学生子类复用父类属性和方法Studentstu=newStudent();stu.Name="张三";stu.Age=18;stu.Score=95;stu.SayHello();stu.Study();// 老师子类复用父类属性和方法Teachertea=newTeacher();tea.Name="李老师";tea.Age=35;tea.Salary=8000;tea.SayHello();tea.Teach();}}

3. 继承核心规则(必记)

  • C#单继承:一个子类只能有一个父类,一个父类可以有多个子类;

  • 继承只会复用public/protected成员,私有成员无法继承;

  • 子类可以扩展新功能,不会影响父类,实现代码拓展。

4. base 关键字:调用父类成员

子类可以通过base关键字,调用父类的属性、方法、构造函数,解决子类重写后无法使用父类逻辑的问题。

classStudent:Person{publicintScore{get;set;}// 重写方法,同时保留父类逻辑publicvoidStudentInfo(){// 调用父类的打招呼方法base.SayHello();Console.WriteLine($"我的考试成绩是:{Score}");}}

四、面向对象核心:多态(Polymorphism)——代码灵活的核心

多态是三大特性中最抽象、但最实用的特性,核心作用:一个父类类型,适配多种子类对象,实现统一调用、不同表现,是项目解耦、框架开发的核心基础。

1. 多态实现条件(缺一不可)

  • 存在继承关系;

  • 父类定义virtual 虚方法(允许被子类重写);

  • 子类使用override重写虚方法;

  • 父类引用指向子类对象。

2. 多态完整实战案例

usingSystem;// 父类classPerson{// 虚方法:允许子类重写publicvirtualvoidShowInfo(){Console.WriteLine("这是人类基础信息展示");}}// 学生子类:重写父类方法classStudent:Person{publicoverridevoidShowInfo(){Console.WriteLine("我是学生,我的职责是认真学习!");}}// 老师子类:重写父类方法classTeacher:Person{publicoverridevoidShowInfo(){Console.WriteLine("我是老师,我的职责是教书育人!");}}classProgram{staticvoidMain(){// 多态核心:父类引用 指向 子类对象Personp1=newStudent();Personp2=newTeacher();// 统一调用方法,执行不同子类的逻辑p1.ShowInfo();p2.ShowInfo();}}

3. 多态核心价值

不需要为每个子类单独写调用方法,统一父类接口,后续新增子类无需修改原有代码,完美符合程序设计的「开闭原则」,是大型项目架构的核心思想。

五、OOP三大特性整合实战(企业级小案例)

我们整合封装(属性)+ 继承 + 多态,完成一个完整可落地的案例,打通所有知识点:

usingSystem;usingSystem.Collections.Generic;// 父类:动物类classAnimal{// 封装:自动属性publicstringName{get;set;}publicintAge{get;set;}// 虚方法,支持多态publicvirtualvoidCry(){Console.WriteLine("动物发出叫声");}}// 子类:狗classDog:Animal{publicoverridevoidCry(){Console.WriteLine($"{Name}{Age}岁):汪汪汪!");}}// 子类:猫classCat:Animal{publicoverridevoidCry(){Console.WriteLine($"{Name}{Age}岁):喵喵喵!");}}classProgram{staticvoidMain(){// 多态集合:统一存储所有子类对象List<Animal>animalList=newList<Animal>(){newDog(){Name="旺财",Age=2},newCat(){Name="橘猫",Age=1}};// 统一遍历调用,不同对象不同表现foreach(varanimalinanimalList){animal.Cry();}}}

六、新手高频易错坑点(必避)

  • 属性混淆:不要公开字段,自动属性用于常规封装,完整属性用于需要数据校验的场景;

  • 继承误区:C#不支持多类继承,私有成员无法被继承,子类只能拓展不能删减父类功能;

  • 多态报错:重写方法必须严格匹配virtual+override,方法名、参数、返回值必须完全一致;

  • base滥用:仅需要保留父类逻辑时使用,避免代码冗余。

七、全文核心总结

  1. 属性是封装的现代化写法,替代冗余的Get/Set方法,保护数据安全,是C#项目开发唯一标准;

  2. 继承实现代码复用,通过父类抽取共性、子类拓展特性,简化层级代码;

  3. 多态实现统一接口、差异化执行,让代码更灵活、易扩展,适配复杂项目架构;

  4. 封装、继承、多态三位一体,构成C#面向对象编程的全部核心,是后续学习接口、泛型、框架开发的基础。

下期预告

下一篇我们将精讲C# 静态类、静态成员、常量与只读,区分静态与实例的核心差异,解决新手分不清静态调用、实例调用的高频问题,进一步夯实项目开发基础!

http://www.jsqmd.com/news/880729/

相关文章:

  • 10分钟上手oam-tools:昇腾NPU运维自动化工具集
  • IEC104 报文解析工具 ProIEC104Client工具使用 104主站从站
  • 青岛国资控股的上市公司有哪些? - 品牌2025
  • MySQL 触发器使用场景
  • 大模型Function Calling工程实战:从协议到生产的完整指南
  • 成都型钢今日报价 实时行情走势现货价格查询首选盛世钢联 - 四川盛世钢联营销中心
  • 2026年5月新消息:果筐机厂家综合实力盘点,宁波华维机械为何值得关注? - 2026年企业推荐榜
  • 2026提升营销业务能力的关键方法:从“流量操盘手”进阶为“数据增长官”
  • 别再乱改时间了!Linux服务器时间同步保姆级指南:hwclock、NTP与cron实战
  • 2026四分类垃圾亭技术全解析:公交站亭/公交站台厂家/公交站台生产厂家/四分类垃圾亭厂家/四分类垃圾箱/垃圾分类亭厂家/选择指南 - 优质品牌商家
  • 你的 Java 程序为什么总是先流畅后卡成狗?——JVM 内存、垃圾回收与调优求生指南
  • FSR框架:自动化CUDA内核优化的技术突破
  • 2026优质光敏三极管厂家推荐榜单:红外线接收头/红外线发射管/光敏三极管/贴片式红外线接收器/红外线接收器/选择指南 - 优质品牌商家
  • 凯撒旅业在全球 / 国内有多少家分子公司、门店? - 品牌2025
  • Linux系统启动卡住了?手把手教你用systemd-analyze和dmesg诊断UEFI启动各阶段耗时
  • 神经网络量化技术:TruncQuant在边缘计算中的高效实现
  • 三年老员工,老板突然说要裁我,我笑着问了一个问题,他愣住了
  • 别再只会用lscpu和free了!dmidecode命令帮你挖出Linux硬件的‘身份证’(BIOS序列号、主板型号全知道)
  • Arm DS自定义组件XML配置与调试技巧
  • 保姆级教程:在Deepin V23 Beta3上彻底禁用Nouveau并安装指定版本NVIDIA驱动(附卸载残留清理指南)
  • Burp Suite安装配置全指南:Java环境、HTTPS解密与代理故障排查
  • 成都热轧H型钢今日报价 实时钢材行情走势现货价格查询首选盛世钢联 - 四川盛世钢联营销中心
  • 特种润滑油脂优质推荐:东莞轴承润滑脂/东莞通用润滑脂/东莞重负荷齿轮油/东莞阀门润滑脂/东莞食品级润滑油/东莞高压抗磨液压油/选择指南 - 优质品牌商家
  • 从Science顶刊到实战:手把手教你用10X单细胞数据做eQTL分析(附代码避坑)
  • 逆向分析第一步:手把手教你搭建WinDbg+VMware双机调试环境(含问题排查)
  • Rydberg原子接收器:量子传感技术的突破与应用
  • 安全测试新手避坑指南:Windows下用X-ray进行被动扫描时,为什么我扫不到漏洞?
  • 边缘计算深度学习模型优化:MARCO框架技术解析
  • 2026钦州必吃海鲜指南:本地人推荐/钦州便宜吃海鲜推荐/钦州出名饭店/钦州去哪吃海鲜便宜/钦州去哪吃海鲜好吃/选择指南 - 优质品牌商家
  • 2026年至今,谁在引领PET瓶胚专用机的技术革新? - 2026年企业推荐榜