关于面向对象 女神告诉你什么是三大特性
java零基础入门-核心语法篇(三)
教材描述问题首先要考虑的就是严谨,不能有错误,但是正是因为严谨,导致语义晦涩难懂,所以往往成了劝退教材。有些看上去高大上,让人摸不着头脑的词,一旦你理解了,发现也就那么回事,并没有什么深不可测的东西,下面我们来揭开他们的神秘面纱吧。
说人话系列开讲!!!
学java你肯定听过这几句话,面向对象编程?一切都是对象?
对象是啥?
先来看看教材上的描述:
具有相同或相似性质的一组对象的抽象就是类,类是对一类事物的描述,是抽象的,概念上的定义;对象是实际存在的该类事物的个体,因而也称为实例(instance)。
对象的抽象化是类,类的具体化就是对象,也可以说类的实例是对象。类用来描述一系列对象,类概述每个对象应包括的数据,类概述每个对象的行为特征。因此,可以把类理解成某种概念,定义,它规定了某类对象所共同具有的数据和行为特征。 ------摘至《疯狂java讲义 第二版》
看完大神的描述你有啥想法?我当时看到这,不仅仅是一脸懵逼,是N脸懵逼...
要想彻底理解这个概念,必须要有一点点抽象思维。举个例子,我们都有心中的女神和男神,但是女神和男神也许并不是唯一的,但是我们脑海里会有一个潜意识,就是当我看一眼这个人,就会默认把他划分为女神或者男神。这个意识是啥?就是你对女神或男神的抽象,这只是一个你定义女神,男神的标准,但这个标准你是看不见摸不着的。
比如你定义一个女神:身高XXX,肤白貌美,前凸后翘,腰细腿长,瓜子脸,翘鼻子大眼睛浓眉毛,看一眼就让人神魂颠倒,心跳加速。
![](https://upload-images.jianshu.io/upload_images/11664304-132b2ec8165331c7.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/642)
女帝符合我定义的所有标准,所以他是女神。我们再来看这句话 :
"类 是对一类事物 的描述,是抽象的,概念上的定义"
女神 是对一类事物(那种你看一眼就心跳的人)的描述,是抽象的,概念上的定义;
"对象 是实际存在的该类事物 的个体,因而也称为实例(instance)。"
女帝 是实际存在的该类事物 ( 女神 ) 的个体,因而也称为实例。
结论: 女神 是类,女帝 是实例。懂了没?继续
"类概述每个对象应包括的数据,类概述每个对象的行为特征 "
![](https://upload-images.jianshu.io/upload_images/11664304-9fb9d944f84b1c8b.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/700)
类 概述 每个 对象 应包括的数据
女神 概述(确定需要哪些标准) 每个 对象(你看到的妹子),应包括的数据(如身高,三围,星座等等)
类 概述 每个对象 的行为特征
女神 概述(确定需要哪些标准) 每个 对象(你看到的妹子),的行为特征(喜欢什么,讨厌什么等等)
总结:类定义了女神的标准,对象定义了具体的妹子的数据和兴趣爱好。类是抽象概念,看不见摸不着,对象是实际存在的,看得见,摸...的着。
懂了没?还没懂你语文估计是体育老师教的,我已经使出浑身解数来帮你理解了。
继续看看面向对象还有哪些高大上的名词
三大特性是:封装,继承,多态
学面向对象一定要搞清楚这三个概念
封装
看见女神就想冲上去加微信,要号码,甚至还想知道年龄,三围,体重,兴趣爱好?抱歉,这是隐私好嘛!问不到资料怎么办?如果小姐姐对你也有点兴趣,当然会指点你,“后面那个是我闺蜜~”。
所谓的封装其实也是一样,我不直接让你操作和修改数据(女神不直接告诉你他的隐私),但是我会提供操作和修改数据的方法给你(你可以通过她指定的闺蜜了解到她的信息)。
封装就是这个意思,但是肯定有同学会问,道理我懂,那为啥要封装呢?不封装会咋样?来看下面的例子
![](https://upload-images.jianshu.io/upload_images/11664304-efc6734b02d2427a.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/700)
点开你的QQ,到编辑资料,你有没有发现一个问题,性别是可以直接设置的,而年龄是不可以的,QQ只给你设置生日。为啥?这里就有封装的概念了。性别可以设置,因为这个随便改影响不大,并没有错误,比如你把QQ号送给别人,改性别很正常。但是如果你设置了生日,又可以改年龄,那会发生什么?你撩了一个92年出生83岁的奶奶?昨天那个小哥哥说他23岁...生日是73年?看见没,是不是有种天下大乱的感觉?所以最好的方式就是封装年龄这个数据,然后给他一个修改的方法,就是通过修改生日去修改年龄,这样就不会出莫名其妙的错误了。
继承
我们上面说到了,定义一个男神或者女神会用到很多标准(属性),但是会有很多属性是重复的,只有部分标准是不一样的。那当我们定义他们的时候,会有很多重复的操作,我们不妨在男神和女神上面再抽象一层出来,这样会让事情变得简单。
![](https://upload-images.jianshu.io/upload_images/11664304-ed7d5f676fde51f2.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/321)
男神,女神都是人,我们把相同的属性抽象出来,作为人这个类。这样我们只需要写一遍(年龄,性别,身高,体重,星座)即可,不用在每个类里面都写这些属性,而女神,男神继承人这个类,就自动获得了人的所有属性,无需再描述。继承是重用代码的重要手段,就是我只写一遍代码,其他需要的地方,"借去"用即可,不需要浪费时间再写一遍。除了重用代码,继承还有扩展的功能。这个又有同学要问了,我觉得 复制粘贴很快啊 ,为啥要这么麻烦?我们看看下面
![](https://upload-images.jianshu.io/upload_images/11664304-34d3f8b2ed3db684.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/672)
我们看到,女神还可以分为萝莉和女王,萝莉娇小可爱,女王霸气十足。男神也可以分为大叔和小鲜肉,大叔成熟稳重,小鲜肉阳光有活力。
如果随着我们定义的概念变多,我们不仅需要写更多的代码,而且还会让有关系的概念产生混乱。在实际的项目中,更加复杂的情况比比皆是,如果不能有效的定义关系,不但写的累,而且看不懂。当我们使用继承,不但关系屡的很清楚,而且需要写的代码少很多。
多态
女神的爱好就是多态,看见包就喜欢包,看见表就爱上表,明天看见保时捷就非要买车。你要问我爱好?那得看我心情。
多态涉及的知识较多,这里暂时不展开讲,后面学了更多的知识后,再详细介绍。
好了,本章讲类和对象,是因为下面我们学习代码马上就会接触到类,对象就干脆一起讲了。这只是初步的概述,后面真正讲到面向对象的时候,还会着重讲。大家慢慢消化吧。
关于面向对象 女神告诉你什么是三大特性相关推荐
- 面向对象之三大特性:继承,封装,多态
python面向对象的三大特性:继承,封装,多态. 1. 封装: 把很多数据封装到⼀个对象中. 把固定功能的代码封装到⼀个代码块, 函数, 对象, 打包成模块. 这都属于封装的思想. 具体的情况具体分 ...
- 面向对象之:三大特性:继承(已讲),封装,多态
目录 1.封装 2.多态 3.类的约束 4. super()深入了解 前言: python面向对象的三大特性:继承,封装,多态. 1. 封装: 把很多数据封装到⼀个对象中. 把固定功能的代码封装到⼀个 ...
- 04 面向对象之:三大特性:继承,封装,多态
前言: Python面向对象的三大特性:继承,封装,多态 1.封装:把很多数据封装到一个对象中,把固定功能的代码封装到一个代码块,函数,对象,打包成模块.这都属于封装的思想.具体的情况具体分析,比如, ...
- Python面向对象之:三大特性:继承,封装,多态以及类的约束
前言: python面向对象的三大特性:继承,封装,多态. 1. 封装: 把很多数据封装到⼀个对象中. 把固定功能的代码封装到⼀个代码块, 函数, 对象, 打包成模块. 这都属于封装的思想. 具体的情 ...
- 04 面向对象之:三大特性:继承(已讲),封装,多态。
前言: python面向对象的三大特性:继承,封装,多态. 1. 封装: 把很多数据封装到⼀个对象中. 把固定功能的代码封装到⼀个代码块, 函数, 对象, 打包成模块. 这都属于封装的思想. 具体的情 ...
- 夯实Java基础系列1:Java面向对象三大特性(基础篇)
本系列文章将整理到我在GitHub上的<Java面试指南>仓库,更多精彩内容请到我的仓库里查看 https://github.com/h2pl/Java-Tutorial 喜欢的话麻烦点下 ...
- Java学习笔记二十五:Java面向对象的三大特性之多态
Java面向对象的三大特性之多态 一:什么是多态: 多态是同一个行为具有多个不同表现形式或形态的能力. 多态就是同一个接口,使用不同的实例而执行不同操作. 多态性是对象多种表现形式的体现. 现实中,比 ...
- 【Python学习笔记】面向对象三大特性
2019独角兽企业重金招聘Python工程师标准>>> ★面向对象:封装.继承和多态是面向对象的三大特点★ 面向对象编程简称OOP,是一种程序设计思想.OOP把对象作为程序的基本单元 ...
- C#面向对象三大特性之二:继承
面向对象的三大特性之一的封装,解决了将对同一对象所能操作的所有信息放在一起,实现统一对外调用,实现了同一对象的复用,降低了耦合. 但在实际应用中,有好多对象具有相同或者相似的属性,比如有一个对象 果树 ...
最新文章
- sysbench的安装详解
- zabbix监控实践解析(历史记录附近乱码、图表显示乱码)
- Linux 解压命令
- P2839 [国家集训队]middle(二分 套 主席树)
- guava 集合转换_Guava的Collections2:过滤和转换Java集合
- 群晖docker签到京豆_利用Synology(群晖)Docker安装签到框架
- Linux命令kill和signal
- 那些在11gR2中可能惹祸的新特性,一张列表帮助你摆脱升级11gR2带来的烦恼
- 问世 20 多年的 PHP 还是最好的编程语言吗?
- petshop 数据库
- h5调用摄像头扫二维码_你的H5还没有升级到小程序吗
- torch.optim.lr_scheduler:调整学习率
- C语言终极贪吃蛇代码,直接COPY上手。
- 英语在线发音linux,英语单词在线发音
- 使用RssHub为网页生成RSS订阅源
- 如何自定义Chromecast的背景以显示个性化图片,新闻等
- 【autojs】Auto.js Pro免root打开无障碍服务(需adb授权,重启手机不失效)脚本源代码
- 什么是等级保护?等保二级和三级的区别?
- android studio上的基本动画实现(第一篇)
- 大众媒体互联网计算机的英语作文,英语作文:大众传媒的优缺点