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

封装和抽象之间的区别

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

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

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

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

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

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

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

或者

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

例子

输出

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

区块A

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

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

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

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

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

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

  • 然后我们调用了 zoom 方法

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

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

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

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Redis学习(11)|Redis键值管理与Spring Boot集成实战

文章目录 引言Redis键值管理概述Spring Boot中使用`RedisTemplate`进行键值管理结论键的生命周期管理,TTL(Time To Live)和过期策略,以及如何批量处理键。 引言 Redis是一款高性能的键值存储系统,以其速度、灵活性和丰富的数据结构而著称。键值管理是Redis的核心功能之一…

Flask-RQ

Flask-RQ库教程 Flask-RQ 是一个用于在 Flask 应用中集成 RQ(Redis Queue)的扩展。RQ 是一个简单的 Python 库,用于将任务排入 Redis 队列并异步执行这些任务。这对于处理长时间运行的任务(如发送电子邮件、生成报告等&#xff0…

修改ppt注册表,导出高分辨率图片

参考:PPT中导出高分辨率图片的方法 修改ppt注册表,导出高分辨率图片:【具体步骤】 1、运行-输入regedit,打开注册表编辑器; 2、找到ppt中选项,按下面路径找。 3、鼠标右键新建-DWORD(32位)(D)&#xff0c…

Python对象复制竟然有这么多种方式,赶紧学起来!

目录 1、浅拷贝:copy模块的copy()函数 📋 1.1 浅拷贝原理揭秘 1.2 实战演示:列表与字典的浅拷贝 列表浅拷贝示例 字典浅拷贝示例 1.3 注意事项:共享引用与独立对象 2、深拷贝:copy模块的deepcopy()函数 📌 2.1 深拷贝实现机制解析 2.2 深拷贝优势分析 2.3 深度…

Hvv--知攻善防应急响应靶机--Linux2

HW–应急响应靶机–Linux2 所有靶机均来自 知攻善防实验室 靶机整理: 夸克网盘:https://pan.quark.cn/s/4b6dffd0c51a#/list/share百度云盘:https://pan.baidu.com/s/1NnrS5asrS1Pw6LUbexewuA?pwdtxmy 官方WP:https://mp.weixin.…

React@16.x(31)useLayoutEffect

目录 1,介绍2,注意点 1,介绍 在用法上和 useEffect 没有任何区别,只是执行的时间点不同。 useEffect 会在组件渲染结束后,UI展示在页面上之后再执行。所以不会阻塞渲染。useLayoutEffect 会在组件渲染结束后&#xf…

课设--学生成绩管理系统(核心代码部分)

欢迎来到 Papicatch的博客 系统介绍 课设--学生成绩管理系统(一)-CSDN博客 课设--学生成绩管理系统(二)-CSDN博客 课设--学生成绩管理系统(三)-CSDN博客 目录 🍉内部接口 🍈 登…

awtk界面实现下拉屏功能

单页面下拉屏 1.src/common/下创建slidescreen.h slidescreen.c slidescreen.h #ifndef SLIDESCREEN_H #define SLIDESCREEN_H#include "awtk.h" #include "../common/navigator.h"BEGIN_C_DECLS#define false 0 #define true 1//滑屏动作值 #define SL…

Navicat 安装及初步配置指南

Navicat 是一款广泛使用的数据库管理工具,支持多种数据库,如 MySQL、PostgreSQL、SQLite 等。以下是 Navicat 安装步骤的详细说明: 在 Windows 上安装 Navicat 下载 Navicat 安装包: 访问 Navicat 官方网站:Navicat 官…

第2讲:pixi.js 绘制HelloWorld

基于第0讲和第1讲,我们增添了vite.config.ts文件。并配置了其他的http端口。 此时,我们删除掉没用的东西。 删除 conter.ts、typescript.svg 在main.ts中改成如下内容: import {Application, Text} from pixi.js import ./style.css// 指明…

C语言笔记25 •顺序表介绍•

数据结构是计算机存储、组织数据的⽅式。数据结构是指相互之间存在⼀种或多种特定关系 的数据元素的集合。数据结构反映数据的内部构成,即数据由那部分构成,以什么⽅式构成,以及数据元素之间呈现的结构。也就是能够存储数据; 存储…

中介子方程二十二

X$XFX$XdXuXWXπX$XWXeXyXeXyXeXWX$XπXWXuXdX$XFX$XEXyXαXiX$XαXiXrXkXtXyX$XpXVX$XdXuXWXπX$XWXeXyXeXyXeXWX$XπXWXuXdX$XVXpX$XyXtXkXrXiXαX$XiXαXyXEX$XFX$XEXyXαXiX$XαXiXrXkXtXyX$XpXVX$XdXuXWXπX$XWXeXyXeXyXeXWX$XπXWXuXdX$XVXpX$XyXtXkXrXiXαX$XiXαXyXEX$…

导航台运营状态明细

Select a.部门, a.最近登陆时间, b.prev_exec_start 访问时间, b.username 访问用户, b.姓名 From zlClients A, (Select a.Prev_Exec_Start, a.Username, Terminal, c.姓名 From sys.gv_$session A, 上机人员表 B, 人员…

Nginx06-rewrite模块详解与实验

目录 写在前面Nginx06nginx rewriterewrite 模块return案例01 访问/admin/ 返回403案例02 域名间跳转 if案例03 只允许GET、POST请求,其他禁止访问 set案例04 设置是否处于维护状态,是则返回503,否则正常访问 rewrite案例05 域名跳转案例06 r…

Unity | Shader基础知识(第十四集:简单效果练习)

目录 前言 一、效果预览 1.弧形边缘光 二、效果制作 1. 制作弧形边缘光 2.弧形边缘光进阶 3.弧形边缘光调节渐变范围 4.边缘光突变 5.同心圆 三、加入世界坐标做效果 1.绘制结界 2.斑马球 3.效果合并 四、作者的碎碎念 前言 有粉丝建议说,让我继续更新…

JMU 数科 数据库与数据仓库期末总结(4)实验设计题

E-R图 实体-关系图 E-R图的组成要素主要包括: 实体(Entity):实体代表现实世界中可相互区别的对象或事物,如顾客、订单、产品等。在图中,实体通常用矩形表示,并在矩形内标注实体的名称。 属性…

基于c语言的简单的数据库

​‌​⁠​​​​​⁠​‬​‬‌​‍​​​‌​‌‬​‌​⁠​​‬‍‬​​⁠​‬‍​​‬​​​‬简单的数据库 - 飞书云文档 (feishu.cn) mydatabase: 实现一个简单的数据库,基于B树 (gitee.com)

纯css星空动画

让大家实现一个这样的星空动画效果,大家会怎么做? js,不! 其实使用css就能写 我也不藏着掖着,源码直接放下面了 <script setup></script><template><div class"box"><div v-for"i in 5" :key"i" :class"layer…

基于C#、Visual Studio 2017以及.NET Framework 4.5的Log4Net使用教程

在使用Log4Net记录日志时&#xff0c;以下是一个基于C#、Visual Studio 2017以及.NET Framework 4.5的详细步骤教程。这个教程适合初学者&#xff0c;会从添加Log4Net库、配置日志、编写日志记录代码等方面进行说明。 步骤1&#xff1a;安装Log4Net 通过NuGet安装 打开您的Vi…

信友队:南风的收集

C. [202406C]楠枫的收集 文件操作 时间限制: 1000ms 空间限制: 262144KB 输入文件名: 202406C.in 输出文件名: 202406C.out Accepted 100 分 题目描述 一年四季&#xff0c;寒暑交替&#xff0c;楠枫总是会收集每一个季节的树叶&#xff0c;并把它们制作成标本收集起来。当…