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

对面向对象的理解(转载原因:举例简单明了)相关推荐

  1. 也许这样理解JavaScript连续赋值更加简单明了一些

    最近发现很多同学的博客里都会解释js连续赋值问题,各种概念辈出,特别是对于不理解的同学来说,更加一头雾水,我这里做个简单解释,也许不懂的一看就明白了. 先抛出一个问题: var a = {c:1} / ...

  2. 在VUE项目中使用SCSS ,对SCSS的理解和使用(简单明了)

    首先要了解什么是CSS 预处理器? SCSS是一种CSS预处理语言 定义了一种新的专门的编程语言,编译后形成正常的css文件,为css增加一些编程特性,无需考虑浏览器的兼容性(完全兼容css3),让c ...

  3. 卷积神经网络VGG16权重数量的计算和理解(转载)

    VGG16网络结构是: _________________________________________________________________ Layer (type)           ...

  4. 面向对象设计原则和常用设计模式简单案例

    文章目录 面向对象设计原则 创建型模型 简单工厂模式 工厂方法模式 抽象工厂模式 单例模式 结构型模型 代理模式 装饰模式 外观模式(facade) 适配器模式 行为型模式 模板方法 策略模式 命令模 ...

  5. 理解神经网络,从简单的例子开始(2)使用python建立多层神经网络

    这篇文章将讲解如何使用python建立多层神经网络.在阅读这篇文章之前,建议先阅读上一篇文章:理解神经网络,从简单的例子开始.讲解的是单层的神经网络.如果你已经阅读了上一篇文章,你会发现这篇文章的代码 ...

  6. 理解神经网络,从简单的例子开始(1)7行python代码构建神经网络

    理解神经网络,从简单的例子开始(1)7行python代码构建神经网络 前言 本文分为两个部分,第一个部分是一个简单的实例:9行Python代码搭建神经网络,这篇文章原文为:原文链接, 其中中文翻译版来 ...

  7. JavaScript面向对象——深入理解寄生组合继承

    JavaScript面向对象--深入理解寄生组合继承 之前谈到过组合继承,会有初始化两次实例方法/属性的缺点,接下来我们谈谈为了避免这种缺点的寄生组合继承 寄生组合继承: 思路:组合继承中,构造函数继 ...

  8. [css] 说说你对BEM规范的理解,同时举例说明常见的CSS规范有哪些?

    [css] 说说你对BEM规范的理解,同时举例说明常见的CSS规范有哪些? BEM是比较好的CSS规范,应该也是得到大家认可最多的CSS规范 OAMC是WeUI根据BEM改造来的 object-are ...

  9. 依赖注入和控制反转的理解(转载)

    学习过Spring框架的人一定都会听过Spring的IoC(控制反转) .DI(依赖注入)这两个概念,对于初学Spring的人来说,总觉得IoC .DI这两个概念是模糊不清的,是很难理解的,今天和大家 ...

最新文章

  1. Facebook的实时Hadoop系统
  2. 预告丨2018年值得关注的200场机器学习会议
  3. 作业二:了解流行的软件
  4. 洛谷——P2590 [ZJOI2008]树的统计(树链剖分模板练手)
  5. 监督学习、半监督学习、无监督学习定义
  6. mysql残余文件的清理
  7. GIOU loss+DIOU loss+CIOU loss
  8. 转的,程序员如何缓解压力
  9. go语言如何实现继承
  10. 多商户商城系统源码 B2B2C商城020社区团购 单多商户入驻商城H5系统源码
  11. [c++] gdiplus绘制透明异型窗口
  12. 『Java面经』简述 Java 的反射机制及其应用场景
  13. Seaweedfs安装配置使用及mount挂载
  14. visio画箭头时,如何去掉箭头的自动连接连接点(吸附)功能?
  15. 探究“补阶乘大法的本质“——糖水不等式
  16. 13.es slop参数实现近似匹配以及原理剖析和相关实验
  17. 《崩坏:星穹铁道》游戏遇到打不开/闪退/黑屏怎么办?
  18. 12个成功案例,告诉你提升客户体验新方法!
  19. WEB自动化-(RFS)RobotFramework+Selenium框架介绍测试流程详解
  20. 学生专用计算机怎样开启关机,怎么设置电脑自动关机?

热门文章

  1. 「两千年中公历转换」数据库介绍
  2. 【推荐】PHP-集成函数总结
  3. c++11decltype关键字详解
  4. zImage制作uImage
  5. 上海市计算机考试准考证号忘记了
  6. 实现北大官网首页的动态图标
  7. python 游戏引擎 cocos2d_【Cocos2dx游戏开发】Cocos2d-x简介
  8. JS 转义字符串中特殊字符
  9. 手机哪里有记事本 手机记事本在哪里找
  10. 摩根大通为ETH区块链的支付机制开发了新的隐私增强工具