吃透面向对象核心:封装、继承、多态、接口全解
C#面向对象三大特性是编程核心重难点本文详细讲解访问权限修饰符、封装与属性、继承与sealed密封类、方法重写、base关键字、抽象类、接口、多态、类型转换及is/as关键字搭配完整实战代码零基础也能轻松掌握OOP核心用法搞定C#进阶必备知识点主要内容访问权限修饰符封装继承方法重写base关键字接口多态1.访问权限修饰符访问修饰符用于控制类、结构、接口、方法和属性、字段等的可见性public:公开的修饰类和类中的成员在整个解决方案中都可使用internal:内部的修饰类和类中的成员在整个项目中都可使用private:私有的修饰类的成员允许修饰内部类只能在类中使用protected:受保护的修饰类的成员只能在本类中生效也可以在子类包含子类的子类及跨项目的子类中生效2.面向对象三大特性-封装封装的主要目的是保护对象的数据不被随意修改、访问数据操作的细节只通过定义好的方法进行访问和操作。这样可以提高代码的安全性、可维护性和可灵活性。封装是一种将数据和操作数据的方法捆绑在一起并隐藏内部实现细节的机制‌1、隐藏内部状态‌将对象的字段设置为私有private这样外部代码不能直接访问这些字段。2‌、提供公共接口‌为对象提供公共方法public来操作内部数据这样外部代码可以通过这些公共方法间接访问和修改内部数据。3、封装的好处‌‌数据保护‌防止外部代码直接访问和修改对象的内部数据从而保护数据的一致性和完整性。‌易于维护‌当内部实现发生变化时只需要修改封装的方法不需要修改外部代码。属性 是一种特殊的成员用于封装类中的字段。它们提供了一种灵活的机制来读取get和/或写入set私有字段的值实现封装私有的字段通常以_开头其它遵循小驼峰命名法。公开的属性通常遵循大驼峰命名法。选中字段名Ctrl R E 快速生成get/set方法3.面向对象三大特性之一继承继承 是一种面向对象编程的核心特性它允许我们创建一个新类称为子类或派生类基于另一个已存在的类称为基类或父类。通过继承子类可以继承基类的属性fields和方法methods并且可以添加新的属性、方法或覆盖override基类的成员。如果多个类中存在相同的方法、属性则可以考虑将相同方法、属性抽取到父类中再通过继承关系子类对象可以直接调用父类中的属性、方法进而可以避免反复编写相同逻辑的代码。实现代码复用和层次化设计语法格式class A : B{}A类 继承 B类A类可以直接使用B类中可以被继承的属性和方法。父类中应根据职责封装子类共有的属性和方法。C#中为单继承只能有一个直接父类。在C#中一个类可以被声明为sealed密封类这意味着它不能被继承。4.方法重写方法重写Override是面向对象编程中的一个核心概念当从父类中继承的方法不能满足子类的需求子类可以重写替换从基类中继承来的方法。virtual修饰方法虚空方法特点子类可以重写也可以不重写override修饰方法重写后的方法特点重写后的方法允许子类再进行重写new修饰方法隐藏父类中继承的方法特点子类中定义了和父类中相同的方法使用new隐藏父类中继承的方法abstract修饰方法、类抽象方法1.子类必须重写父类中的抽象方法要么子类也为抽象类2.抽象方法必须定义在抽象类中### 方法重写与方法重载英文位置不同作用不同重载overload同一个类中在一个类里面的一种行为方法名可以相同提高可读性可维护性。。重写override子类和父类间父类方法无法满足子类的要求子类通过方法重写满足要求。5.base关键字指向子类对象中从父类中继承的成员this.xxx先使用子类中的子类中没有再使用父类中继承的base.xxx使用父类中继承的子类中成员和父类中成员同名时base.成员名调用父类中成员子类构造方法:base(xxx)创建子类对象在堆空间中申请空间该空间中1.存储子类的字段、属性、方法。2.存储父类中继承的字段、属性、方法。this与base关键字的区别this用于引用当前类的实例对象。可以通过this关键字来访问当前对象的成员。每个实例方法都有一个隐式的this参数该参数指向当前实例。this访问的成员在本类中没有时才访问父类中继承的成员。base通过base关键字来访问父类对象中的成员。base关键字并不是父类对象的引用而是一种用于访问基类成员的语法。它允许在派生类中访问基类的构造函数、方法和属性等。6.接口1. 介绍接口Interface是一种定义规范而不是定义行为具体的实现引用类型。它用于定义一组方法、属性、事件或索引器的契约。接口本身不提供实现而是由实现接口的类来提供具体实现。接口定义中只包含属性、方法等的声明而没有实际的方法实现或字段。可以把一个接口看做是一组公共的属性和方法的规范。由于C#中类的继承是单继承的接口为多继承在某些方面可以弥补单继承的不足。2. 特点接口存在的意义就是制定规范。接口没有构造函数不能创建对象。接口中属性方法不允许添加访问权限修饰符默认为public。接口与接口之间可以多继承。类与接口之间可以多实现。实现类实现了接口后必须将接口中所有抽象方法都实现。3. 使用原则接口使用interface关键字声明它与类的声明类似。接口声明默认是 public 的。按照约定接口名称以大写字母I开头。接口中的属性是隐式public。接口中的方法隐式为public公开 abstract(抽象类)。4. 语法格式4.1 定义接口[public | internal] interface 接口名{​返回值类型 方法名([形参列表]);}internal interface IMyInterface { void Play(); }4.2 实现接口一个类可以实现一个或多个接口。4.2.1 实现一个接口[public | internal] class 类名 : 接口名{​返回值类型 方法名([形参列表])​{​}}internal interface IMyInterface { void Play(); } class MyClass : IMyInterface { public void Play() { } }7.多态面向对象三大特征之一多态。调用同一个父类|接口中的方法由于子类|实现类不同可能会有不同的行为。以**继承继承类|实现实现接口**为前提。多态 可以 增加代码的灵活度。是调用方法的技巧不会影响到类|接口的内部设计。使用多态创建对象父类型|接口类型 对象名1 new 子类型|实现类型();Person person new Zs();类型转型方式1子类型|实现类型 对象名2 (子类型|实现类)对象名1;Zs zs1 (Zs)person;方式2子类型|实现类型 对象名3 对象名1 as 子类型|实现类型;as关键字 用于将一个对象强制转换为指定的类型。Zs zs2 person as Zs;is 关键字is关键字 主要作用是进行类型检查判断一个对象是否属于某个类型。使用is关键字可以增加代码的安全性。bool 变量名 对象名 is 类型;Person person new Zs(); if (person is Zs) { Zs zs2 person as Zs; Zs zs1 (Zs)person; }5.4 as 和 is 区别is操作符主要用于检查一个表达式的类型是否与指定的类型兼容而as操作符主要用于将一个对象强制转换为指定的类型。

相关新闻

1.4、Linux系统安装KES

1.4、Linux系统安装KES

1、安装准备 1.版本说明V008R006C009B0014 V008:是version产品的大版本。 R006:是release产品特性版本。 C009:是通用版 B0014:是build开发过程中的构建版本2.硬件要求 #安全版和企业版 内存:1GB 以上 硬盘&#xff1a…

2026/10/21 4:13:45 阅读更多 →
Python ImportError深度解析:从error模块导入失败到模块系统原理

Python ImportError深度解析:从error模块导入失败到模块系统原理

1. 项目概述:当 from error import * 遇上 ImportError 如果你在 Python 代码里写下了 from error import * ,然后满怀期待地运行,结果迎面而来的却是 ImportError: No module named ‘error‘ ,那一瞬间的困惑和挫败感&a…

2026/10/22 17:26:29 阅读更多 →
深度解析:为什么上海的中小企业在做【上海部道网站 建设】时容易踩雷以及我们如何避坑

深度解析:为什么上海的中小企业在做【上海部道网站 建设】时容易踩雷以及我们如何避坑

做互联网这行久了,你会发现一个特别有意思的现象:很多老板在做【上海部道网站 建设】这件事上,往往比去上海滩谈几百万的生意还要焦虑。焦虑什么呢?焦虑的是钱花出去了,网站做出来了,看起来挺唬人,结果一看数据,空空如也。更有甚者,网站刚上线没几天,搜索引擎里连个影…

2026/10/22 13:29:27 阅读更多 →

最新新闻

Electron桌面应用开发实战:从环境搭建到打包发布全流程

Electron桌面应用开发实战:从环境搭建到打包发布全流程

做前端这些年,我大部分时间都在跟浏览器标签页打交道,直到第一次把桌面应用跑起来,才发现原来自己一直被限制在地址栏和刷新按钮围起来的框框里。Electron这个词,最开始是在某段时间频繁出现在同事的讨论里,一个用HTML…

2026/10/22 10:18:38 阅读更多 →
滑盖智能锁T109深度解析:结构原理、安装调试与故障排查

滑盖智能锁T109深度解析:结构原理、安装调试与故障排查

简介:亚太天能T109滑盖智能锁产品说明书是一份PDF格式的官方技术文档,主要面向智能锁安装人员、终端用户及售后维护者,帮助快速掌握产品安装、配置与常见故障处理。全包仅1个PDF文件,大小4.37MB,内容结构清晰&#xff…

2026/10/22 11:01:53 阅读更多 →
PMSM弱磁控制原理与Simulink建模:高速AGV驱动系统设计指南

PMSM弱磁控制原理与Simulink建模:高速AGV驱动系统设计指南

上个月我在调试一台高速AGV的驱动系统,整车要求空载跑到8m/s,电机转速已经拉到额定点,驱动器的输出电压也顶到了母线电压极限附近。再往上踩速度指令,转速纹丝不动,三相电流反而开始震荡。那会儿我的第一反应就是&…

2026/10/22 9:44:47 阅读更多 →
C++核心知识点:从内存管理到STL的实战指南

C++核心知识点:从内存管理到STL的实战指南

C 这门语言我前前后后折腾了十几年,用它写过嵌入式驱动、做过游戏服务端,也搭过基础组件库。每次看到新人一头扎进"C 核心知识点"这个搜索词,我其实挺感慨的——这门语言的难点从来不是语法多,而是知识点之间的耦合太深…

2026/10/22 10:42:00 阅读更多 →
T109滑盖智能锁怎么装?安装调试与故障排查全攻略

T109滑盖智能锁怎么装?安装调试与故障排查全攻略

简介:亚太天能T109滑盖智能锁产品说明书以PDF格式发布,适合智能锁用户、安装人员与售后维修人员阅读。内容围绕T109系列指纹密码刷卡锁展开,先介绍前面板、后面板、锁体、机械钥匙、电池盒盖等部件名称与功能,再给出完整安装步骤&…

2026/10/22 10:40:08 阅读更多 →
LLM知识降熵:从信息垄断到理解权下放

LLM知识降熵:从信息垄断到理解权下放

你有没有过这种经历:翻开源码注释、论文摘要或者一份专业报告,每个字都认识,连在一起却像天书。想找人聊聊,身边要么没人懂,要么懂的懒得跟你解释。后来我试着把同一段内容丢给一个大语言模型,几秒钟之后&a…

2026/10/22 10:56:37 阅读更多 →

日新闻

周新闻

基于GMM的语音识别系统原理与MATLAB实现详解

基于GMM的语音识别系统原理与MATLAB实现详解

说到基于高斯混合模型(GMM)的语音识别系统,很多人第一反应就是一堆数学公式,觉得门槛很高。但如果你真的在MATLAB里把它落地跑通,会发现核心其实就是三件事:把声音变成特征向量,用GMM给每个类别…

2026/10/22 1:47:45 阅读更多 →
数字图像处理入门:反白、灰度化、调色板修改与导出txt实践

数字图像处理入门:反白、灰度化、调色板修改与导出txt实践

数字图像处理这四个字听起来挺唬人,但落到具体操作上,无非就是让计算机按你的想法“摆弄”像素。我在一个模拟项目X里用了一套特别经典的基础处理流程:对图像做反白、改调色板、彩色转灰度,最后把像素数据导出成txt文件。单看每一…

2026/10/21 21:32:28 阅读更多 →
机器人大脑技术盘点:具身智能的感知、决策与数据闭环

机器人大脑技术盘点:具身智能的感知、决策与数据闭环

如果你的信息流最近也天天刷到“机器人大脑”这个词,你会发现一个很有意思的现象:每个人说的“大脑”根本不是同一个东西。有人指的是大语言模型,有人指的是运动控制系统,还有人指的是能理解物理世界的端到端模型。在2026年这个时…

2026/10/22 5:12:39 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/21 21:50:56 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/21 21:51:55 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/21 16:24:48 阅读更多 →