对面向对象的理解(转载原因:举例简单明了)
1、什么是面向对象语言
面向对象语言(Object-Oriented Language)是一类以对象作为基本程序结构单位的程序设计语言,指用于描述的设计是以对象为核心,而对象是程序运行时刻的基本成分。
面向对象语言很多,如一直高居世界编程语言排行榜的Java、C#、C++、Object-C、PHP等等。
2、面向对象的理解
以下是个人对面向对象的理解:
什么是对象? 引用我的一位大学老师的说:一切都是类、一切都是对象。
现在大部分的面向对象语言是基于类的。
2.1、对象
一切都是对象
举例:
将一栋房子 比作一个对象 【房子:对象】。 从图上也可以看到这是一种新类别的房子【房子:类-Class】 如图
这尼玛就是对象,那对象应该包含什么呢,相信只要学过,面向对象的肯定都知道面向对象的三项基本特征:封装、继承、多态。
2.2、对象的基本特征一:封装
封装 将各个独立功能设计成一个个独立的单元,形成一个有规划设计的整体,减小耦合,提高内聚,避免牵一发而动全身,方便对程序的修改。
还是用房子来解释,上面已经有房子的基本类型了,大概样子就是那个熊样。
举例:
房子空间很大,但是如果男男女女有十几人住,而且就一间屋子的话,很不方便,如果吃喝拉撒一个屋,那就成难民营,更何况晚上灯一黑,立刻就乱套了,你懂得。
这样,就要想法解决:
工人们出动了,把房子折腾折腾给分成楼上楼下两层,并说明了,一楼吃喝玩乐、二楼休息;
楼上楼下工人们又分别给隔离出几个房间,就把房子这样改造好了,然后男男女女们过来了,大家就可以各自的房间,做爱做的事,而且不会影响到其他了。
这样一个简单的封装就完成 【房子:类-class】是对 【房子两层:部分类-partialclass】的封装 ;【房子两层:部分类-partialclass】是对【房间:函数/方法-function】的封装。
2.3、对象的基本特征二:继承
继承 发生在两个对象之间,继承对象可以肆意的使用被继承对象的一些属性、方法&函数等;使代码重用,减少编码量,间接减少维护成本。
仍然是房子。
工人们已经给分好楼、做好房间了。这时有个人觉得房子应该有个紧急避难所。好吗,尼玛房子都折腾的差不多了,尼玛告诉工人要紧急避难所,工人说这不好搞哇。可以这人有钱,任性,
发话了,要搞必须搞,不好搞也要搞,而且狠狠的搞。工人们就为难了,难道再去给盖一栋有避难所的房子?大家集思广益最终,房子其他都还用着,再给挖个地下室。于是新房子诞生了。
一个简单的继承就出现了 【房子:基类-baseclass】被【新房子:扩展类-ExtensionClass】继承。
2.4、对象的基本特征三:多态
多态 不同的场合做出不同相应,有着不同的特点,可以说是封装的一个实现。
房子已经成型,要对房间进行装修了,工人想法很简单都按照一种样式来,简单方便快捷。但是住房的男男女女们有意见,这就是尼玛客户,各种千奇百怪的想法,有要在承重墙
上开扇窗户的,有要在卫生间装摄像头的、要在厨房里装空调。工人们对能实现就开始开工了,对房子的窗户、地板、墙、楼梯等进行装修。这样装修完房子内部就丰富起来了。
如图 “一种多态的展现”就出来了:【房子:类-class】 通过 【窗户、地板、墙、楼梯等:属性-Property】体现多态
2.5、面向对象
最后的总结,前面其实是对象的说明。现在来说一下面向对象,像开篇提到的一切都是对象。那面向对象有是怎么回事呢难道说是面向一切,真这么理解也不为过。
面向对象是一种对现实世界理解和抽象的方法,对做程序来说,就是让程序人员,用一种思维更好的看待万物,在编程中的本质。 OO
对面向对象的理解(转载原因:举例简单明了)相关推荐
- 也许这样理解JavaScript连续赋值更加简单明了一些
最近发现很多同学的博客里都会解释js连续赋值问题,各种概念辈出,特别是对于不理解的同学来说,更加一头雾水,我这里做个简单解释,也许不懂的一看就明白了. 先抛出一个问题: var a = {c:1} / ...
- 在VUE项目中使用SCSS ,对SCSS的理解和使用(简单明了)
首先要了解什么是CSS 预处理器? SCSS是一种CSS预处理语言 定义了一种新的专门的编程语言,编译后形成正常的css文件,为css增加一些编程特性,无需考虑浏览器的兼容性(完全兼容css3),让c ...
- 卷积神经网络VGG16权重数量的计算和理解(转载)
VGG16网络结构是: _________________________________________________________________ Layer (type) ...
- 面向对象设计原则和常用设计模式简单案例
文章目录 面向对象设计原则 创建型模型 简单工厂模式 工厂方法模式 抽象工厂模式 单例模式 结构型模型 代理模式 装饰模式 外观模式(facade) 适配器模式 行为型模式 模板方法 策略模式 命令模 ...
- 理解神经网络,从简单的例子开始(2)使用python建立多层神经网络
这篇文章将讲解如何使用python建立多层神经网络.在阅读这篇文章之前,建议先阅读上一篇文章:理解神经网络,从简单的例子开始.讲解的是单层的神经网络.如果你已经阅读了上一篇文章,你会发现这篇文章的代码 ...
- 理解神经网络,从简单的例子开始(1)7行python代码构建神经网络
理解神经网络,从简单的例子开始(1)7行python代码构建神经网络 前言 本文分为两个部分,第一个部分是一个简单的实例:9行Python代码搭建神经网络,这篇文章原文为:原文链接, 其中中文翻译版来 ...
- JavaScript面向对象——深入理解寄生组合继承
JavaScript面向对象--深入理解寄生组合继承 之前谈到过组合继承,会有初始化两次实例方法/属性的缺点,接下来我们谈谈为了避免这种缺点的寄生组合继承 寄生组合继承: 思路:组合继承中,构造函数继 ...
- [css] 说说你对BEM规范的理解,同时举例说明常见的CSS规范有哪些?
[css] 说说你对BEM规范的理解,同时举例说明常见的CSS规范有哪些? BEM是比较好的CSS规范,应该也是得到大家认可最多的CSS规范 OAMC是WeUI根据BEM改造来的 object-are ...
- 依赖注入和控制反转的理解(转载)
学习过Spring框架的人一定都会听过Spring的IoC(控制反转) .DI(依赖注入)这两个概念,对于初学Spring的人来说,总觉得IoC .DI这两个概念是模糊不清的,是很难理解的,今天和大家 ...
最新文章
- Facebook的实时Hadoop系统
- 预告丨2018年值得关注的200场机器学习会议
- 作业二:了解流行的软件
- 洛谷——P2590 [ZJOI2008]树的统计(树链剖分模板练手)
- 监督学习、半监督学习、无监督学习定义
- mysql残余文件的清理
- GIOU loss+DIOU loss+CIOU loss
- 转的,程序员如何缓解压力
- go语言如何实现继承
- 多商户商城系统源码 B2B2C商城020社区团购 单多商户入驻商城H5系统源码
- [c++] gdiplus绘制透明异型窗口
- 『Java面经』简述 Java 的反射机制及其应用场景
- Seaweedfs安装配置使用及mount挂载
- visio画箭头时,如何去掉箭头的自动连接连接点(吸附)功能?
- 探究“补阶乘大法的本质“——糖水不等式
- 13.es slop参数实现近似匹配以及原理剖析和相关实验
- 《崩坏:星穹铁道》游戏遇到打不开/闪退/黑屏怎么办?
- 12个成功案例,告诉你提升客户体验新方法!
- WEB自动化-(RFS)RobotFramework+Selenium框架介绍测试流程详解
- 学生专用计算机怎样开启关机,怎么设置电脑自动关机?