面向对象的程序设计:以对象的方式进行思考
1 理解接口与实现的区别
以上一篇文章的电视机需要插电使用的例子继续来讲解:

对电视而言,插电使用,只需要标准的插座即可,具体的电从哪里来,是火力发电厂,或是太阳能发电,亦或是畜电池逆变供电,电视机是不需要关心的。
发电厂或供电设备属于实现,220V交流电插座属于接口。改变实现不会对电视机的使用产生影响,而改变接口则会。
- 接口:呈现给外部使用的服务属于接口,进一步将,只需要呈现需要使用的接口。
- 实现:实现的细节对外部是进行隐藏的,对代码编写来说,修改实现是不需要变动用户代码的。
2 使用抽象思维设计接口
面向对象编程的一大优势,是可以重用类,而这些可重用的类,接口通常比较抽象。
- 具体接口:功能明确
- 抽象接口:通用性高
举个例子:创建一个出租车对象,有抽象接口(送到机场)和具体接口(左转、右转、启动、停止)

对于抽象接口,送到机场,不管是在哪座城市,哪个位置,都可以到达机场,只是具体的路径可能会不一样。
<
相关文章:
面向对象的程序设计:以对象的方式进行思考
1 理解接口与实现的区别 以上一篇文章的电视机需要插电使用的例子继续来讲解: 对电视而言,插电使用,只需要标准的插座即可,具体的电从哪里来,是火力发电厂,或是太阳能发电,亦或是畜电池逆变供电,电视机是不需要关心的。 发电厂或供电设备属于实现,220V交流电插座属于…...
酵母三杂交实验全解析:从技术到应用【泰克生物】
酵母三杂交实验(Yeast Three-Hybrid, Y3H)是酵母双杂交(Y2H)技术的扩展,专门用于研究更复杂的分子相互作用,尤其是小分子与蛋白质间的相互作用。通过引入小分子作为第三方调节因子,酵母三杂交技…...
Git 分支合并
Merge(合并) Merge 是 Git 中最常用的分支合并方式之一。当你想要将一个分支的更改合并到另一个分支时,你可以使用 Merge 操作。 合并步骤: 通常是从开发分支往主分支上合并代码的时候用 merge 1、git checkout master&#x…...
C# 以管理员方式启动程序全解析
引言 在 Windows 应用程序开发的领域中,C# 语言凭借其强大的功能和广泛的适用性,被众多开发者所青睐。然而,在实际的开发过程里,我们常常会遭遇这样的情况:程序需要访问特定的系统资源,像是系统文件夹、注…...
CSS:语法、样式表、选择器
目录 一、语法 二、创建 外部样式表 内部样式表 内联样式 三、选择器 ID选择器 类选择器 伪类选择器 :hover a:link a:active a:visited 属性选择器 伪元素选择器 ::first-letter ::first-line ::selection ::placeholder ::before 和::after 通配选择器 标…...
python轻量级框架-flask
简述 Flask 是 Python 生态圈中一个基于 Python 的Web 框架。其轻量、模块化和易于扩展的特点导致其被广泛使用,适合快速开发 Web 应用以及构建小型到中型项目。它提供了开发 Web 应用最基础的工具和组件。之所以称为微框架,是因为它与一些大型 Web 框架…...
SQL和MySQL以及DAX的日期表生成?数字型日期?将生成的日期表插入到临时表或者实体表中
几种生成日期表的方法 如何用SQL语句生成日期表呢? 如何用MySQL语句生成日期表呢? 如何用DAX语句生成日期表呢? 1. MySQL生成日期表 1.1 日期格式:yyyy-MM-dd 字符型 2024-01-02 -- 生成日期表 WITH RECURSIVE temp_dateTable …...
文件下载时利用redis的队列模式顺序下载文件,防止多文件任务下载导致OOM
1、controller层控制 Resourceprivate RedissonClient redissonClient;Slf4j Service public class CustomerSettlementExportServiceImpl implements ICustomerSettlementExportService { /*** 文件加入队列顺序导出** param pubFileExportList 参数* return 结果*/public Aja…...
第13章:Python TDD完善货币加法运算(二)
写在前面 这本书是我们老板推荐过的,我在《价值心法》的推荐书单里也看到了它。用了一段时间 Cursor 软件后,我突然思考,对于测试开发工程师来说,什么才更有价值呢?如何让 AI 工具更好地辅助自己写代码,或许…...
两份PDF文档,如何比对差异,快速定位不同之处?
PDF文档比对是通过专门的工具或软件,自动检测两个PDF文件之间的差异,并以可视化的方式展示出来。这些差异可能包括文本内容的修改、图像的变化、表格数据的调整、格式的改变等。比对工具通常会标记出新增、删除或修改的部分,帮助用户快速定位…...
ESP-Skainet语音唤醒技术,设备高效语音识别方案,个性化交互应用
在当今数字化、智能化飞速发展的时代,物联网(IoT)与人工智能(AI)的深度融合正在重塑我们的生活和工作方式。 在智能家居的生态系统中,语音唤醒技术不仅能够为用户提供个性化的服务,还能通过定制…...
地图:nuxt3高德地图简单使用 / nuxt2 + amap
一、官方网站 JS API 安全密钥使用-基础-进阶教程-地图 JS API 2.0 | 高德地图API 二、使用 2.1、创建应用 2.2、添加key,得到key值 2.3、nuxt3项目 引入amap 2.4、pages/map.vue <template><div class"container"><div id"map-co…...
走进DevOps:让开发与运维齐头并进
引言:开发与运维的“世纪和解” 还记得那些年,开发人员总是埋头写代码,然后甩手交给运维去部署,仿佛是把热山芋扔给别人。而运维呢,总是默默承受着系统崩溃、服务停机的风险,直到某一天他们终于忍不住咆哮&…...
力扣动态规划-5【算法学习day.99】
前言 ###我做这类文章一个重要的目的还是给正在学习的大家提供方向(例如想要掌握基础用法,该刷哪些题?建议灵神的题单和代码随想录)和记录自己的学习过程,我的解析也不会做的非常详细,只会提供思路和一些关…...
LLM(3) : 浏览器录制16K的音频并上传到后端
可被阿里云[qwen-audio-asr]大模型识别 HTML <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"><title>录音并上传</title></head><body><button id"recordButton">开始/停…...
PyTorch使用教程(13)-一文搞定模型的可视化和训练过程监控
一、简介 在现代深度学习的研究和开发中,模型的可视化和监控是不可或缺的一部分。PyTorch,作为一个流行的深度学习框架,通过其丰富的生态系统提供了多种工具来满足这一需求。其中,torch.utils.tensorboard 是一个强大的接口&…...
服务器日志自动上传到阿里云OSS备份
背景 公司服务器磁盘空间有限,只能存近15天日志,但是有时需要查看几个月前的日志,需要将服务器日志定时备份到某个地方,需要查询的时候有地方可查。 针对这个问题,想到3个解决方法: 1、买一个配置比较低…...
树莓派学习
飞书:https://hi06pny1nlj.feishu.cn/docx/GYsMdth7ooNlbJx8zBDcdbcPnec?fromfrom_copylink csdn:https://blog.csdn.net/qq_41685627/article/details/145250576 基础工作 安装和部署 1.1 树莓派三种连接电脑的方式 https://blog.csdn.net/weixin…...
NestJS中实现注入多个实现了同一个接口的Service
在NestJS中有一种场景,在注入的时候需要将多个实现了同一个接口的service都注入到系统里,而NestJS中默认时没有这种注入,此时我们可以使用一个变通的provider来实现这一功能。 看下面例子,假定我们有一个OSService接口࿰…...
Qt按钮美化教程
前言 Qt按钮美化主要有三种方式:QSS、属性和自绘 QSS 字体大小 font-size: 18px;文字颜色 color: white;背景颜色 background-color: rgb(10,88,163); 按钮边框 border: 2px solid rgb(114,188,51);文字对齐 text-align: left;左侧内边距 padding-left: 10…...
很多人对渗透测试工程师的认知停留在“模拟黑客攻击”,但实际工作内容远比这更全面。
在上一篇渗透测试入门指南发布后,很多粉丝私信我:“成为一名合格的渗透测试工程师,到底需要具备哪些硬实力?”“入行后该如何规划职业路径,避免原地踏步?”“企业招聘时更看重哪些技能和经验?”…...
OpenClaw自动化测试:Qwen3.5-9B验证APP多语言截图
OpenClaw自动化测试:Qwen3.5-9B验证APP多语言截图 1. 为什么需要自动化多语言测试 去年参与一个跨国APP项目时,我遇到了一个棘手问题:每次发版前需要人工检查12种语言的界面翻译一致性。团队成员需要手动截图、对照原文、记录差异ÿ…...
DeepSeek-OCR-2实用指南:如何用AI高效处理扫描件和照片文字
DeepSeek-OCR-2实用指南:如何用AI高效处理扫描件和照片文字 1. 认识DeepSeek-OCR-2 1.1 什么是OCR技术 OCR(Optical Character Recognition)技术就像给电脑装上了一双"会读书的眼睛"。它能将图片、扫描件中的文字转换为可编辑的…...
Hindley-Milner类型签名详解:mostly-adequate-guide-chinese的函数式编程类型系统
Hindley-Milner类型签名详解:mostly-adequate-guide-chinese的函数式编程类型系统 【免费下载链接】mostly-adequate-guide-chinese 函数式编程指南中文版 项目地址: https://gitcode.com/gh_mirrors/mo/mostly-adequate-guide-chinese 在函数式编程中&#…...
开源大模型研报工具:Pixel Epic与Llama-Research在专业度上的横向评测
开源大模型研报工具:Pixel Epic与Llama-Research在专业度上的横向评测 1. 评测背景与工具介绍 在金融分析、市场研究和学术写作领域,高质量的研究报告生成工具正变得越来越重要。本次评测将对比两款基于开源大模型的研报生成工具:Pixel Epi…...
SecGPT-14B效果展示:对Splunk SPL查询语句进行安全语义解释与优化建议
SecGPT-14B效果展示:对Splunk SPL查询语句进行安全语义解释与优化建议 1. 引言:当安全分析遇上智能助手 想象一下这个场景:作为一名安全分析师,你正面对海量的日志数据,需要快速编写Splunk SPL查询语句来追踪一次潜在…...
第九章:Vite API 参考手册
第九章:Vite API 参考手册 9.1 核心 API createServer 创建 Vite 开发服务器 import { createServer } from viteconst server await createServer({configFile: false,root: __dirname,server: { port: 3000 } })await server.listen() console.log(服务器启动在,…...
【2026企业级Blazor落地白皮书】:金融/医疗场景下SSR+Hydration+Streaming SSR三模混合渲染实战(附GCP/Azure边缘部署Checklist)
第一章:Blazor 2026企业级落地战略全景图 Blazor 正在从“可选框架”跃迁为 2026 年企业级 .NET 应用的默认前端架构范式。其核心驱动力并非仅限于 C# 全栈统一,更在于 WebAssembly 运行时成熟度、AOT 编译稳定性提升、以及与 Azure Static Web Apps、Mi…...
OpenClaw技能市场巡礼:Qwen3-4B适配的十大实用模块
OpenClaw技能市场巡礼:Qwen3-4B适配的十大实用模块 1. 为什么需要关注OpenClaw技能市场? 第一次接触OpenClaw时,我被它"AI操控电脑"的概念吸引,但真正让我持续使用的却是它的技能市场(ClawHub)…...
BMS81M001超低功耗震动唤醒模块技术解析
1. BMS81M001 唤醒式震动检测模块深度技术解析1.1 模块定位与工程价值BMS81M001 是由 BEST MODULES CORP 推出的专用低功耗唤醒型震动检测模块,其核心设计目标是解决嵌入式系统中“持续监听机械扰动”带来的能耗瓶颈问题。在工业状态监测、智能穿戴设备、防盗报警系…...
