OOP之封装 【C#】

C# 高级编程:面向对象编程(OOP)深度解析 特性抽象类接口继承方式单继承(一个类只能继承一个抽象类)多继承(一个类可实现多个接口)成员实现可包含抽象成员(无实现)和非抽象成员所有成员均为抽象(隐式public))应用场景定义 “is-a” 关系(如 “狗是动物”)定义 “can-do” 契约(如 “可记录日志”))优先使用接口实现行为抽象(如ILogger)。使用抽象类封装公共实现(如AbstractLogger包含日志级别校验逻辑)。 阅读详情
前言
        最近大富翁论坛引发了一场辩论,其实所讨论的就是OO中的封装,大家可以去看看。
        Url:http://www.delphibbs.com/delphibbs/dispq.asp?lid=3903096
        封装是OO的三要素之一,也是隔离变化最实用的技巧之一。

一:封装的概念
        可以把程序按某种规则分成很多“块“,块与块之间可能会有联系,每个块都有一个
可变部分和一个稳定的部分。我们需要把可变的部分和稳定的部分分离出来,将稳定的部分
暴露给其他块,而将可变的部分隐藏起来,以便于随时可以让它修改。这项工作就是封装.
        例如:在用类实现某个逻辑的时候,类就是以上所说的块,实现功能的具体代码就是
可变的部分,而public的方法或者属性则是稳定的部分。

        面向对象系统中的对象的封装性可以这么描述:
        封装性表明对象可以拥有私有元素,并能在隐藏内部细节的情况下管理自己的内部状态,
外界只能从对象所表达的具体概念,对象所提供的功能[服务]和对象的对外接口来抽象的
认识对象,通过向对象发送消息来激励对象的自身动作,以达到在对象上施加特定操作的目的。

二:封装的好处
        其一: 使用者只需要了解如何通过类的接口使用类,而不用关心类的内部数据结构和数据组织方法。
        其二:高内聚,低耦合一直是我们所追求的,用好封装恰恰可以减少耦合
        其三:只要对外接口不改变,可以任意修改内部实现,这个可以很好的应对变化
        其四:类具有了简洁清晰的对外接口,降低了使用者的学习过程

三:C#中的访问修饰符
        在C#中使用访问修饰符 public、protected、internal 或 private 来达到封装变化的效果
声明的可访问性MSDN解释解释
private访问仅限于包含类型所在类型内部
protected访问仅限于包含类或从包含类派生的类型A:所在类型的内部
B:该类型派生的类型的内部
protected internal访问仅限于从包含类派生的当前程序集或类型A:所在类型的内部
B:该类型派生的类型的内部
C:只有当前项目中可以访问
internal访问仅限于当前程序集只有当前项目中可以访问
public访问不受限制访问不受限制

        注:关于程序集的解释,请参看【.NET框架程序设计】<修订版>
三:C#中封装的具体实现
        其一:命名空间级别的封装 
            命名空间 :不能添加任何访问修饰符,永远为public性质
        其二:类型级别上的封装 
            A:顶级类型 :只能是public和internal ,默认可访问性是 internal。 
            B:嵌套类型 :是其他类型的成员,它们可以具有下表所示的声明的可访问性。

属于默认的成员可访问性该成员允许的声明的可访问性
enumpublic无
classprivatepublic
protected
internal
private
protected internal
interfacepublic无
structprivatepublic
internal
private
             注:嵌套类型的可访问性取决于它的可访问域,该域是由已声明的成员可访问性和直接包含类型的可访问域 
             这二者共同确定的。但是,嵌套类型的可访问域不能超出包含它的类型的可访问域。 
        其三:类型级别中的封装【属性或者操作】
            类型级别中的所有元素都可以用任意的访问修饰符做访问限制
            A:构造函数
                可以控制构造函数为private来实现单例模式
            B:字段
                字段除了可以使用访问修饰符来限制其访问级别以外,由于它的特殊性,还需要有别的封装处理。
                类的成员一般可以读和写。但是在某些特殊情况下,是只能读或者只能写的。
                所以C#中,引入了属性的概念。利用属性,我们可以限制字段为只读或者只写或者可读写。
                Person类一般在定义了名字以后,使用者是不能修改的,如何做到只读效果呢?我们可以这样:
                         public String sName { get; private set; } // read-only
                         public String sCode { private get; set; } // write-only
               Person类中有Age,而年龄是有限制的,假设只能 Age大于0,小于<100,如何做到呢? 
                         public Int32 Age 
                         { 
                              get { return Age; } 
                              set 
                              { 
                                   if (value <= 0 || value > 100)
                                         throw new Exception("年龄给值错误"); 
                                   Age = value;
                              } 
                        } 
            C:方法
                我们一般把不使用或者容易变化的方法定义成private
                而把常使用比较稳定的方法定义成public
            D:嵌套类型 :见嵌套类型

四:封装的原则:
        简化用户接口,隐藏实现细节,这个是封装的根本目的。
        封装的难点在于如何设计接口。
        其一:必须保证接口是功能的全集,即接口能够覆盖所有需求。
                不能完成必要功能的封装是没有意义的。
        其二:尽量使接口是最小冗余的。这是为了简化类使用者的学习和使用,难用的接口是
                最容易让人遗忘的。冗余接口的存在是被允许的,但必须保证冗余接口是有效的。
                也就是说,增加冗余接口会带来很大的好处,比如性能的飞升。
        其三:要保证接口是稳定的,将接口和实现分离,并将实现隐藏,就是为了能保护类使用者
                在类的实现细节改变的情况下,不必随时修改。一旦接口被公布,永远也不要改变它。
        绝大多数失败的设计,都来自于失败的封装!
21、深入探索C编程:静态构造、OOP支柱与封装服务 本文深入探讨了C#编程中的核心概念,包括静态构造函数和静态类的作用,面向对象编程(OOP)的三大支柱——封装、继承和多态,以及访问修饰符和封装服务如何保护数据完整性。通过示例代码详细阐述了这些概念的实现方式及其重要性,帮助开发者编写更加健壮和可维护的应用程序。 阅读详情

相关推荐

用Charles抓包调试iOS应用?这份保姆级配置指南帮你绕过所有坑

本文提供了一份在Mac上使用Charles抓包调试iOS应用的保姆级配置指南。详细讲解了从Charles安装、Mac端代理设置、根证书安装,到iOS设备连接同一WiFi、配置代理以及最关键的系统证书信任等全流程步骤,并分享了SSL代理规则、断点调试等进阶技巧,帮助开发者高效定位和解决网络请求问题。

rice5的博客 641

C# OOP 封装详解:从基础到高级应用

封装是面向对象编程(OOP)的核心概念之一,它指的是将对象的属性和行为(方法)组合成一个独立的单元,并尽可能隐藏对象的内部实现细节,仅通过定义良好的接口与外部交互。在C#中,封装主要通过类来实现,类是封装的载体。隐藏内部细节:封装允许开发者将类的内部实现细节隐藏起来,只暴露必要的接口给外部使用。例如,一个类可以隐藏其内部的余额计算逻辑,只提供Deposit(存款)和Withdraw(取款)等方法给外部调用。这样,外部代码不需要了解余额是如何计算和存储的,只需要通过这些方法与对象交互即可。提高代码复用性。

caifox的博客 1147

Lane、PHY和Preset Value Bit

每个Lane支持不同的传输速度和带宽,例如PCIe 3.0中,一个Lane的传输速度可以达到8 GT/s(Giga Transfers per second),也就是1 GB/s(GigaBytes per second)。Preset Value Bit(预置值位)是在PCIe 3.0的Lane上新引入的一种机制,用于优化信号传输质量。PCIe设备可以包含多个Lane,例如x1、x4、x8、x16等,表示该设备同时使用的Lane数目,比如x16表示该设备采用了16个Lane,具有更高的传输速度和带宽。

weixin_58083606的博客 1300

C#——OOP封装,继承,多态(20181121)

 &gt;&gt;   A.  &gt;&gt; 类类型   B.  &gt;&gt; 类类型   1.  &gt;&gt;   C.  &gt;&gt; this关键字的作用   D.  &gt;&gt; this,构造函数链   A.  &gt;&gt; static关键字   B.  &amp

SeafyLiang的博客 322

Ubuntu 24.04 下 NoMachine 极速安装与远程桌面配置全攻略

本文详细介绍了在Ubuntu 24.04系统下安装和配置NoMachine远程桌面的完整指南。从系统准备、分步安装到性能调优和常见问题解决,帮助用户快速实现低延迟的远程桌面访问。特别适合开发者和IT管理员在Linux环境下高效部署远程工作环境。

moon9的博客 946

Python爬取腾讯视频m3u8加密流实战(附完整代码)

本文提供了一份详细的Python实战教程,指导如何通过抓包分析、模拟请求头与载荷,破解腾讯视频的m3u8加密流防盗链机制,并附上完整代码实现视频片段的下载与合并。教程涵盖从侦察到代码实现的完整流程,并包含参数动态化、多线程下载等高级技巧与避坑指南,旨在帮助开发者掌握流媒体下载的核心技术。

weixin_29090089的博客 1639

C# OOP模型(传说中的继承封装多态)

继承 封装 多态

梁州小栗的博客 487

人工蜂群优化算法(ABC)详解:原理、实现与应用

人工蜂群算法(Artificial Bee Colony, ABC)是Karaboga于2005年提出的一种群体智能优化算法,其灵感来源于蜜蜂群体在自然界中高效的采蜜行为。该算法通过模拟雇佣蜂、观察蜂和侦察蜂三种角色的分工协作来寻找最优解。在ABC算法中,每个潜在的解决方案被视为一个“食物源”,其质量由适应度函数评估。雇佣蜂负责在已知优质食物源附近进行局部开采;观察蜂根据雇佣蜂分享的信息,以一定概率选择并跟进优质食物源;侦察蜂则随机探索新区域,防止种群陷入局部最优。

qq_42212808的博客 393

C# 面向对象核心:类与对象、封装、构造方法、继承全解析————从 OOP 思想到代码落地 一篇带你掌握 C# 的三大支柱

面向对象编程(OOP)是 C# 的基石。理解类与对象封装继承以及构造方法是编写高质量 C# 代码的必经之路。本文基于三篇系统教程,将这些知识点融会贯通,帮助你建立完整的 OOP 知识体系。主题核心要点类与对象类为模板,对象为实例。字段私有,属性公开,方法定义行为。封装通过访问修饰符隐藏实现细节,通过属性控制读写权限,保证数据安全。构造方法初始化对象,支持重载,this可调用其他构造,base可调用父类构造。静态成员属于类本身,所有对象共享,优先于对象存在,静态方法不能访问非静态成员。继承。

zmr0625的博客 175

如何让C++程序生成dump文件?生成dump文件的方式有哪些?如何使用Windbg分析dump文件?

本文详细介绍了如何让C++程序生成dump文件、生成dump文件的多种方式以及如何使用Windbg分析dump文件,并给出了对应的实战分析案例,有一定的实战参考价值。

dvlinker的技术专栏 5万+

[C#]面向对象编程概念介绍(OOP)

OOP代表面向对象编程。面向过程编程是编写对数据执行操作的过程或方法,而面向对象的编程是创建包含数据和方法的对象。面向对象的程序设计比面向过程程序设计具有以下优点:1) 结构清晰,程序是模块化和结构化,更加符合人类的思维方式;2) 易扩展,代码重用率高,可继承,可覆盖,可以设计出低耦合的系统;3) 易维护,由于面向对象有封装、继承、多态性的特性,可以设计出低耦合的系统,使系统更加灵活,更易于维护,系统低耦合的特点有利于减少程序的后期维护工作量。

FL1768317420的博客 617

车辆重识别/再辨识数据集: Vehicle Re-ID Datasets Collection

车辆数据库 1.VERI-Wild: A Large Dataset and a New Method for Vehicle Re-Identification in the Wild (2019-CVPR) 数据库名称:VERI-Wild 论文:链接 数据库描述: 车辆图像由一个包含174个摄像机,拍摄范围覆盖超过200平方公里的市区CCTV系统拍摄。摄像机是24小时连续拍摄30天,其长时间的...

AI炼丹师 6858

用C# 实现 OOP,AOP,封装、继承、多态以及方法名称后面跟着 where 关键字的用法,这其实是泛型约束(Generic Constraints) 的核心语法,用来限制泛型类型参数的范围。

本文系统介绍了面向对象编程(OOP)的三大核心特性:封装通过私有字段和公共属性保护数据安全;继承实现代码复用;多态允许子类重写父类方法。同时详细讲解了面向切面编程(AOP)的概念,它通过切面特性(如日志、性能监控)与核心业务逻辑解耦,演示了基于特性+反射的AOP实现方式,并与工业级AOP框架进行对比。文章通过交通工具的完整示例,展示了OOP三大特性与AOP的结合应用,最后还补充了泛型约束、设计模式等进阶内容,为开发者提供了全面的编程范式指导。

cao919的专栏Net 645

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

【Java编程教程】详解Java OOP 概念

隐藏内部细节和显示功能被称为抽象。比如电话,我们不知道内部处理。在Java中,我们使用抽象类和接口来实现抽象。

架构师小吴的博客 425

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

C# 面向对象(OOP)编程关键知识点

C#语言是2001年,微软推出".Net战略"时,专门订制的一门编程语言,其基本的思想就是仿照JAVA语言的虚拟机原理,开发出“受托管”的中间语言。C#的OOP(面向对象)编程是C#编程语言中最为精华的部分,如果没有学习C#的OOP部分,则可以认为就没有学习过C#。在继承关系的类中,父类中定义了“虚方法”(关键字:Virtual),子类使用关键字override 进行方法重写。目的是:为了一个项目中,可以使用重名的类。private: 私有的,只能本类访问,包括子类也不能访问,是最严格的控制访问。

我是菜鸟 1314

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

字段封装

封装是OOP(面向对象编程)三大特征之一。为什么需要封装?首先看以下代码Code: public class Student    {                  public int age;                  public string name;                     

Hamber_Bao的专栏 5519

.Net OOP详解

什么是OOP   OOP是开发程序中必须要使用的,而且面试的时候也经常会问到这个问题。应该很多人都知道,OOP的三大特点:封装、继承、多态。 首先,什么是OOP,OOP: Object Oriented Programming,面向对象的程序设计。所谓“对象”在显式支持面向对象的语言中,一般是指类在内存中装载的实例,具有相关的成员变量和成员函数(也称为:方法)。打个比方说,把一个人看...

479

【基础编程】面向对象编程(OOP)详细解析

面向对象编程(OOP)详细解析

u013136510的博客 1282

笔记:C#_OOP_基础入门:简明指南

OOP:简明指南 Object Oriented Programming 目录 OOP三大:核心特征封装继承多态 OOP 面向对象程序设计(Object Oriented Programming,OOP) 是一种计算机编程架构。 核心技术封装、继承、多态。 必须掌握! OOP 是C#编程语言中的 核心 如果没有学习C#的OOP部分,则可以认为就没有学习过C#。 To Map 三大:核心特征 封装 封装 就是把 客观事物 封装成 抽象的类, 并..

HadesNyx 291

C#面向对象编程实践

面向对象编程(Object-Oriented Programming,OOP)是一种基于对象概念的编程范式,C#作为现代编程语言全面支持OOP特性。封装通过访问修饰符(public、private、protected)实现数据隐藏,确保对象内部状态的安全性。只读属性通过省略set访问器实现,init访问器(C#9.0)提供对象初始化期间的赋值能力。此外,DRY(Don't Repeat Yourself)原则通过继承和组合消除重复代码,Law of Demeter减少对象间的耦合。

welwuminghao的博客 670

面向对象 --OOP

------------------------★OOP三大特征:封装:数据、方法继承:派生类继承父类一切非私有(private)数据、方法多态:重载、重写------------------------★class与object关系类将一些数据封装起来,并给出一个高效率的接口。对象是通过类来抽象描述,描述他们的特征与行为。对象是类的一个实例。但是并不是所有的类都是用来描绘对象的,如果一个

796

C# 面向对象编程实用指南(一)

面向对象编程(OOP)是围绕对象而不是动作组织的编程范式,围绕数据而不是逻辑。随着 C#的最新版本发布,有许多新的增强功能改进了 OOP。本书旨在以引人入胜和互动的方式教授 C#中的 OOP。阅读本书后,您将了解 OOP 的四大支柱,即封装、继承、抽象和多态,并能够利用 C# 8.0 的最新功能,如可空引用类型和异步流。然后,您将探索 OOP 中的各种设计模式、原则和最佳实践。随着现代编程实践的引入,显然开发人员正在寻找更先进的构造,以帮助他们以最有效的方式交付最佳软件。

龙哥盟 1304
上一篇: 【转】动静之间,不变的本质--我的程序语言实践
SysBug
博客等级 码龄22年 3粉丝 14原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值