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

封装和抽象之间的区别

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

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

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

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

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

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

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

或者

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

例子

输出

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

区块A

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

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

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

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

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

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

  • 然后我们调用了 zoom 方法

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

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

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/716622.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

k8s学习--OpenKruise详细解释以及原地升级及全链路灰度发布方案

文章目录 OpenKruise简介OpenKruise来源OpenKruise是什么?核心组件有什么?有什么特性和优势?适用于什么场景? 什么是OpenKruise的原地升级原地升级的关键特性使用原地升级的组件原地升级的工作原理 应用环境一、OpenKruise部署1.安…

融资融券有哪些交易技巧,两融利率现在最低多少?4.0%!

融资融券交易技巧 授信额度技巧 当我们账户净资产有显著增长时,最好主动申请增加信用额度,这样在后面行情好转入资金需要进行更多融资融券交易时就不会受限于授信额度,避免因为临时申请增加额度而错过交易机会。 买入委托技巧 现金的折算率…

开发一个python工具,pdf转图片,并且截成单个图片,然后修整没用的白边及循环遍历文件夹全量压缩图片

今天推荐一键款本人开发的pdf转单张图片并截取没有用的白边工具 一、开发背景: 业务需要将一个pdf文件展示在前端显示,但是基于各种原因,放弃了h5使用插件展示 原因有多个,文件资源太大加载太慢、pdf展示兼容性问题、pdf展示效…

100V宽电压H62410A恒压芯片 24V降压5V 24V降压12V电源IC

H62410A是一款宽电压100V 内置MOS管的降压恒压芯片,适用于24V降压至5V或12V的应用场景。其内置100V耐压MOS和宽压8V-90V的输入范围,使得它能够在多种电压条件下稳定工作。同时,支持输出电压可调至3.3V,为不同设备提供了灵活的电源…

树莓派4B学习笔记11:PC端网线SSH连接树莓派

今日继续学习树莓派4B 4G:(Raspberry Pi,简称RPi或RasPi) 本人所用树莓派4B 装载的系统与版本如下: 版本可用命令 (lsb_release -a) 查询: Opencv 版本是4.5.1: 今日学习使用网线连接树莓派,网线可以提供更…

Vue46-render函数

一、非单文件和单文件的main.js对比 1-1、非单文件的main.js 1-2、 单文件的main.js 将单文件的main.js中的render函数变成非单文件的main.js中的template形式,报如下错误: 解决方式: 二、解决方式 2-1、引入完成版的vue.js 精简版的vue&a…

TMS320F280049学习5:CPU timer中断

TMS320F280049学习5:CPU timer中断 文章目录 TMS320F280049学习5:CPU timer中断前言一、工程代码二、CPU timer时钟总结 前言 DSP的内部有3个CPU timer,分别是CUP timer0 / 1 / 2,传说CPU timer2一般在跑系统时用,类似…

【Unity】RPG2D龙城纷争(一)搭建项目、导入框架、前期开发准备

更新日期:2024年6月12日。 项目源码:后续章节发布 免责声明:【RPG2D龙城纷争】使用的图片、音频等所有素材均有可能来自互联网,本专栏所有文章仅做学习和教程目的,不会将任何素材用于任何商业用途。 索引 【系列简介】…

DSP教学实验箱_数字图像处理_操作教程:5-1 图像旋转

一、实验目的 学习图像旋转的原理,掌握图像的读取方法,并实现图像旋转。 二、实验原理 图像旋转 图像的旋转是指以图像的某一点为原点以逆时针或顺时针旋转一定的角度。其本质是以图像的中心为原点,将图像上的所有像素都旋转一个相同的角…

PHP邮箱验证码功能优化的策略?怎么配置?

PHP邮箱验证码服务怎么样?如何保障邮箱的安全性? PHP邮箱验证码是验证用户身份的常见方法之一,它通过向用户注册的邮箱发送一次性验证码来确认用户的身份。然而,为了确保这一过程既安全又用户友好,需要一些优化策略来…

hadoop/hive/DBeaver启动流程

hadoop 启动 cd到指定目录下 cd /opt/module/hadoop-3.3.0/sbin/启动文件 ./start-all.shjps一下,查看显示的内容 应该显示以下内容 NameNode SecondaryNameNode DataNode ResourceManager NodeManager如果缺少namenode,那么执行 rm -rf /tmp/hadoo…

flink1.12.0学习笔记(一)-部署与入门

flink1.12.0学习笔记(1)-部署与入门 1-1-Flink概述 Flink诞生 Flink 诞生于欧洲的一个大数据研究项目 StratoSphere。该项目是柏林工业大学的一个研究性项目。早期, Flink 是做 Batch 计算的,但在 2014 年, StratoS…

Linux_应用篇(19) V4L2 摄像头应用编程

ALPHA/Mini I.MX6U 开发板配套支持多种不同的摄像头,包括正点原子的 ov5640(500W 像素)、ov2640(200W 像素)以及 ov7725(不带 FIFO、 30W 像素)这三款摄像头,在开发板出厂系统上&…

30岁想自学PLC转变职业规划,行业空间如何?

在开始前刚好我有一些资料,是我根据网友给的问题精心整理了一份「PLC的资料从专业入门到高级教程」, 点个关注在评论区回复“888”之后私信回复“888”,全部无偿共享给大家!!!30岁想自学PLC转变职业规划是…

ollama模型CPU轻量化部署

一、定义 ollama 定义环境部署demo加载本地模型方法基本指令关闭开启ollamaollama 如何同时 运行多个模型, 多进程ollama 如何分配gpu修改模型的存储路径 二、实现 ollama 定义 ollama 是llama-cpp 的进一步封装,更加简单易用,类似于docker. 模型网址…

HTTP协议版本历程

HTTP协议的发展历程 版本推出年份当前状态HTTP/0.91991年已过时HTTP/1.01996年已过时HTTP/1.11997年标准HTTP/2.02015年标准HTTP/3.02022年标准 HTTP/0.9 HTTP/0.9非常简单,并不涉及数据包传输,通过请求和响应的交换达成通信,请求由单行指…

深度解析量水堰:结构、分类与设计要点

量水堰,作为水工测量中的关键设施,其精确度和多样性对于水位和流量的测量至关重要。其工作原理基于通过堰顶断面上的进水口,将水位引导至堰体内部,从而实现水位和流量的平衡。量水堰通常采用高强度、耐久的材料构建,如…

ABBYY Finereader 15中文版安装包下载及安装教程

​ABBYY FineReader 是一款功能强大的 OCR(Optical Character Recognition)软件,可以将扫描的文档转换为可编辑的文本文件。它不仅可以识别文本,还可以识别表格、图像和布局,使得文档的转换更加准确和方便。 安 装 包 …

考试系统提供源码能做什么?

考试系统提供源码,无疑为现代教育领域注入了新的活力。源码,作为软件开发的基石,其开放与共享的特性使得考试系统具备了前所未有的灵活性和可定制性。那么,考试系统提供源码究竟能做什么呢?本文将详细探讨其多重功能与…

如何警用root用户登录ssh

使用tail指令,可以动态查看日志信息。 (tail -f /var/log/secure或messages) 使用>符号,可以清空日志内容,不删除文件本身。 禁用root用户为以下步骤: 首先使用useradd创建用户(可以修改为其…