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

使用 C# 进行面向对象编程:第 10 部分

封装和抽象之间的区别

对于 OOP 初学者来说,封装和抽象之间存在非常基本的区别。他们可能会对此感到困惑。但如果你详细了解这两个主题,就会发现它们之间存在巨大差异。

抽象意味着向用户隐藏不必要的数据。用户只需要所需的功能或根据其需求的输出。例如数码相机。

亲爱的读者,每当我们使用数码相机时,我们只需单击“放大”和“缩小”按钮,相机就会放大和缩小,但我们可以感觉到镜头在移动。如果我们打开相机,我们会看到我们无法理解的复杂机制。因此,按下按钮并根据您的需求获得结果就是抽象。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传
封装只是将数据成员和函数组合成一个称为对象的单一实体。

如果我们再次考虑相机示例,当我们按下放大/缩小按钮时,相机内部会使用由齿轮和镜头组成的机制来放大或缩小。齿轮和镜头的组合称为封装,可帮助缩放功能顺利运行。

简单来说,我们可以说“抽象是通过封装实现的”。

或者

抽象解决设计方面的问题,而封装解决实现方面的问题。

例子

输出

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

区块A

  • 在本次课程中,我们定义了一个抽象类。
    有一个受保护变量和一个函数。
    B座

  • 在本节中,我们定义了一个以抽象类为基类的类。

  • 具有两个公共变量和两个函数。

  • 一个从基类覆盖的属性 zoomresult

  • 在这个块中,我们改变了齿轮和镜头的值,以便改变_picturesize变量的大小。
    C 座

  • 在本次会话中,我们创建了 camerazoom 类的对象。

  • 然后我们调用了 zoom 方法

  • 之后,我们使用属性显示变量 _picturesize 的输出。

  • 然后我们再次调用方法放大并显示变量 _picturesize 的结果。

  • 在最后一部分,我们调用该方法缩小图片并检查结果。

相关文章:

  • 嵌入式中间件_1.嵌入式中间件的定义及特点
  • 机器学习python实践——数据“相关性“的一些补充性个人思考
  • NettyのEventLoopChannel
  • 超高清图像生成新SOTA!清华唐杰教授团队提出Inf-DiT:生成4096图像比UNet节省5倍内存。
  • 银行数仓项目实战(一)--什么是数据仓库
  • 独立游戏之路:Tap篇 -- Unity 集成 TapTap 广告详细步骤
  • MySQL触发器基本结构
  • React@16.x(32)useDebugValue
  • flutter 环境搭建(windows)(先装 jdk 建议1.8起步)
  • Spring IOC的优、缺点
  • 视频合成渲染服务解决方案,数字人+PPT+视频云剪辑
  • 搭建RocketMQ主从异步集群
  • vue前段处理时间格式,设置开始时间为00:00:00,设置结束时间为23:59:59
  • Langchain-chatchat: Langchain基本概念
  • SaaS案例分享:成功构建销售渠道的实战经验
  • 77. Combinations
  • 8年软件测试工程师感悟——写给还在迷茫中的朋友
  • Android框架之Volley
  • Java 网络编程(2):UDP 的使用
  • JavaScript函数式编程(一)
  • java中具有继承关系的类及其对象初始化顺序
  • miaov-React 最佳入门
  • Spring声明式事务管理之一:五大属性分析
  • Vim 折腾记
  • Vue组件定义
  • XForms - 更强大的Form
  • -- 查询加强-- 使用如何where子句进行筛选,% _ like的使用
  • 道格拉斯-普克 抽稀算法 附javascript实现
  • 使用Gradle第一次构建Java程序
  • 使用前端开发工具包WijmoJS - 创建自定义DropDownTree控件(包含源代码)
  • 适配iPhoneX、iPhoneXs、iPhoneXs Max、iPhoneXr 屏幕尺寸及安全区域
  • 移动端 h5开发相关内容总结(三)
  • 用Visual Studio开发以太坊智能合约
  • AI算硅基生命吗,为什么?
  • !$boo在php中什么意思,php前戏
  • #etcd#安装时出错
  • #面试系列-腾讯后端一面
  • (1)Map集合 (2)异常机制 (3)File类 (4)I/O流
  • (2)MFC+openGL单文档框架glFrame
  • (k8s)kubernetes集群基于Containerd部署
  • (pojstep1.1.1)poj 1298(直叙式模拟)
  • (附源码)ssm跨平台教学系统 毕业设计 280843
  • (附源码)计算机毕业设计SSM教师教学质量评价系统
  • (接上一篇)前端弄一个变量实现点击次数在前端页面实时更新
  • (算法)求1到1亿间的质数或素数
  • (学习日记)2024.03.12:UCOSIII第十四节:时基列表
  • (一)kafka实战——kafka源码编译启动
  • (一)springboot2.7.6集成activit5.23.0之集成引擎
  • (转)jQuery 基础
  • (转)真正的中国天气api接口xml,json(求加精) ...
  • (轉貼) 資訊相關科系畢業的學生,未來會是什麼樣子?(Misc)
  • ... fatal error LINK1120:1个无法解析的外部命令 的解决办法
  • .[backups@airmail.cc].faust勒索病毒的最新威胁:如何恢复您的数据?
  • .Family_物联网
  • .NET 5.0正式发布,有什么功能特性(翻译)