我看面向对象

      已经面向对象编程多年了,渐渐地对面向对象有了越来越深的体会,下面谈谈我对面向对象的拙见:)

      面向对象三大特性:封装、继承、多态。

      首先是封装,我觉得封装是面向对象的基础,封装让各种相关的数据和方法形成一个有机的整体(对象)。各种对象由于组成元素(字段、属性)和行为(方法)的不同而不同,这样世界才丰富多彩。封装让对象内部与外界有了明显的”界”。再谈谈封装的粒度,完全面向对象编程是不可能的或很不现实的,并且没必要,面向对象并不是对现实的模拟,需要根据项目的情况来调整对象的粒度,比如:现在我们考察一个地区有多少栋建筑,就没必要考虑建筑的形状,建筑的层数,建筑里有多少房间等。我觉得把握适当的粒度也从一方面反映个人抽象能力。

      其次是继承,继承是面向对象中类与类(接口)之间的关系,我觉得用生物进化论类比继承是很恰当的,继承让对象衍生出更具多样性的对象(多态)。继承的出发点是好的,然而在编程过程中继承的深度是需要谨慎考虑,继承得太深了容易陷入模拟现实的圈子里。Adapter设计模式,把继承的深度降低了,同时设计带来了更大的灵活性。依赖抽象(或基类),不要依赖具体。

      最后是多态,我觉的多态可以从宏观和微观两个方面来看。从宏观来看,类的泛化是一种多态的表现形式,派生类扩展了基类,基类下的派生类共性于基类,特性于扩展;微观上看,就要深入类的内部了,重载反映了行为上的多种形态,方法参数的抽象性我觉得也是多态的体现。

     封装 — 造“物”,继承 — 进化,多态 — 求同存异。

     以上是本人对面向对象见解,不喜勿喷,因为多态:)

 

转载于:https://www.cnblogs.com/oneday/p/3615667.html

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

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

相关文章

poj 3525

多边形内最大半径圆。 哇没有枉费了我自闭了这么些天,大概五天前我看到这种题可能毫无思路抓耳挠腮举手投降什么的,现在已经能1A了哇。 还是先玩一会计算几何,刷个几百道 嗯这个半平面交二分就阔以解决。虽然队友说他施展三分套三分***** 想象…

尤雨溪对 2022 Web前端生态趋势是这样看的

文章目录前言开发范式&底层框架方面趋势基于依赖追踪范式基于依赖追踪范式—共同点基于编译的响应式系统统一模型的优势和代价基于编译的运行是优化Vue Vapor Mode(input)工具链原生语言在前端工具链中的使用工具链的抽象层次基于 Vite 的上层框架上…

bzoj4919 [Lydsy1706月赛]大根堆

Description 给定一棵n个节点的有根树,编号依次为1到n,其中1号点为根节点。每个点有一个权值v_i。你需要将这棵树转化成一个大根堆。确切地说,你需要选择尽可能多的节点,满足大根堆的性质:对于任意两个点i,j&#xff0…

众多mock工具,这一次我选对了

文章目录写在前面Mock介绍Mock能解决什么问题?传统Mock解决方案Postman接口测试工具Mock js第三方库Eolink解决方案全局Mock高级Mock返回结果Mock智能内置Mock智能自定义Mock约束条件MockEolink的Mock解决方案的优势:写在最后写在前面 交战之前,战士必先利其兵器&…

高并发的理解和使用场景-----特意区别和多线程的关系

一,高并发的理解 1.概念:就是短时间内遇到大量操作请求,导致站点服务器/db服务器资源被占满甚至严重时直接导致宕 2.影响:没有做高并发预处理的系统会给用户很差的体验感; 3.系统好坏的衡量:衡量一个系统的…

async 和 await 原来这么简单

前言 前端同学们可能都知道 async 和 await 的使用,当被面试官问到 async 和 await 的是什么?或者说一说你对 async、await 的理解?如果我们还是仅仅去阐述我是如何使用的就显得格外的苍白无力。今天博主就来带大家进一步认识我们的 async 和…

研一寒假02-指针_new分配内存_使用new来创建动态数组_使用动态数组_使用delete来释放new分配的内存...

#---------------------------------指针-----------------------------------# #include <iostream> int main(){ using namespace std; /* 指针引入 */ int updates 6; //声明一个变量 int* p_updates; //声明一个指针p_updates,该指针指向一个地址 p_updates&upd…

利用Windows内置工具winsat测试硬盘速度(SSD机械盘对比)

利用Windows内置工具winsat测试硬盘速度&#xff08;SSD&机械盘对比&#xff09; 以下是红色内容是在命令行运行&#xff1a; C:\Users\Administrator>winsat diskWindows 系统评估工具> 正在运行: 功能枚举 > 运行时间 00:00:00.00> 正在运行: 存储评估 -seq …

我为何在 CSDN 乐在其中

文章目录写在前面成为博主究竟能得到什么&#xff1f;内在提升耀眼名片丰富眼界提升知名度博客》变现写在最后写在前面 各位伙伴大家好&#xff0c;我是几何心凉&#xff0c;一位不是很大的也不是很小的博主&#xff0c;今天想要跟大家去聊一些比较实在的内容&#xff1b;大家能…

EFLinq查询

1、无参数查询var model db.Database.SqlQuery<UserInfo>("select* from UserInfoes ").ToList(); 2、有参查询var model db.Database.SqlQuery<UserInfo>("select* from UserInfoes where idID ",new SqlParameter("ID",id)).ToL…

实现div可以调整高度(div实现resize)

实现div可以调整高度&#xff08;div实现resize&#xff09; 一、div 实现resize&#xff08;类似textarea&#xff09; 代码如下&#xff1a; <!DOCTYPE html> <html><head><title>div实现textarea效果</title><style>#textarea {height:…

10分钟设置免费远程桌面

文章目录前言远程桌面设置教程启动Amazon Lightsail实例配置远程桌面启动远程桌面使用远程桌面前言 “你见过洛杉矶凌晨4点的样子吗&#xff1f;” 没有也没关系&#xff0c;你可以轻松配置一台位于洛杉矶的免费远程桌面。 利用Amazon全球可用区&#xff0c;甚至可以在世界各…

树莓派-开启spi

1. sudo raspi-config #进入树莓派配置页 2. #进入每5项&#xff0c;进入启用spi即可 转载于:https://www.cnblogs.com/lobin/p/10459076.html

Lucene全文检索过程

1. 索引过程&#xff1a; 1) 有一系列被索引文件 2) 被索引文件经过语法分析和语言处理形成一系列词(Term)。 3) 经过索引创建形成词典和反向索引表。 4) 通过索引存储将索引写入硬盘。 2. 搜索过程&#xff1a; 1) 用户输入查询语句。 2) 对查询语句经过语法分析和语言分析得到…

tcpdump 用法

原文链接 本文原文来自&#xff1a; A tcpdump Tutorial with Examples — 50 Ways to Isolate Traffic TCPDUMP 简介 TCPDUMP 在一个界面中既提供了强大的功能又简单易用&#xff0c;无疑已经是网络分析工具中的老大。 本教程将介绍如何以各种方式隔离流量&#xff1a;从IP&am…

网络端

1.synchronized 同步锁 同步方法: 成员|静态 简单,但是锁的范围一般可能较大,效率低 同步块 类的class:相当于锁了类的整个信息|所有对象 this:锁当前对象,锁了这个对象的所有资源 资源:一般锁不变的内容--对象地址 锁的范围太大效率低,锁的范围太小可能锁不住 锁一定要锁不变的…

BZOJ2690: 字符串游戏(平衡树动态维护Dfs序)

Description 给定N个仅有a~z组成的字符串ai,每个字符串都有一个权值vi,有M次操作&#xff0c;操作分三种&#xff1a;Cv x v:把第x个字符串的权值修改为vCs x a:把第x个字符串修改成aQ:求出当前的最大权字符串集合&#xff0c;使得这个集合中的字符串经过重新排列后满足除最后一…

【第一趴】初探uni-app(uni-app发行者、uni-app推出背景、为什么选择uni-app)

文章目录写在前面DCloud当下跨平台开发存在的问题为什么选择uni-app写在最后写在前面 聚沙成塔——每天进步一点点&#xff0c;大家好我是几何心凉&#xff0c;不难发现越来越多的前端招聘JD中都加入了uni-app 这一项&#xff0c;它也已经成为前端开发者不可或缺的一项技能了&…

Rocket - tilelink - Atomics

https://mp.weixin.qq.com/s/TSwKL_qm-b-0e8x7r--hhg 简单介绍Atomics中数学运算、逻辑运算的实现。​​1. ioAtomics是一个硬件模块&#xff0c;他继承自Modules&#xff1a;​​IO端口定义如下&#xff1a;​​其中&#xff1a;a. write: 是否写操作&#xff1b;b. a&#xf…

Spark streaming java代码

待做转载于:https://www.cnblogs.com/drjava/p/10464388.html