java零基础入门-核心语法篇(三)

教材描述问题首先要考虑的就是严谨,不能有错误,但是正是因为严谨,导致语义晦涩难懂,所以往往成了劝退教材。有些看上去高大上,让人摸不着头脑的词,一旦你理解了,发现也就那么回事,并没有什么深不可测的东西,下面我们来揭开他们的神秘面纱吧。

说人话系列开讲!!!

学java你肯定听过这几句话,面向对象编程?一切都是对象?

对象是啥?

先来看看教材上的描述:

具有相同或相似性质的一组对象的抽象就是类,类是对一类事物的描述,是抽象的,概念上的定义;对象是实际存在的该类事物的个体,因而也称为实例(instance)。

对象的抽象化是类,类的具体化就是对象,也可以说类的实例是对象。类用来描述一系列对象,类概述每个对象应包括的数据,类概述每个对象的行为特征。因此,可以把类理解成某种概念,定义,它规定了某类对象所共同具有的数据和行为特征。      ------摘至《疯狂java讲义 第二版》

看完大神的描述你有啥想法?我当时看到这,不仅仅是一脸懵逼,是N脸懵逼...

要想彻底理解这个概念,必须要有一点点抽象思维。举个例子,我们都有心中的女神和男神,但是女神和男神也许并不是唯一的,但是我们脑海里会有一个潜意识,就是当我看一眼这个人,就会默认把他划分为女神或者男神。这个意识是啥?就是你对女神或男神的抽象,这只是一个你定义女神,男神的标准,但这个标准你是看不见摸不着的。

比如你定义一个女神:身高XXX,肤白貌美,前凸后翘,腰细腿长,瓜子脸,翘鼻子大眼睛浓眉毛,看一眼就让人神魂颠倒,心跳加速。

海贼王 -女帝

女帝符合我定义的所有标准,所以他是女神。我们再来看这句话 :

"类    是对一类事物                                              的描述,是抽象的,概念上的定义"

女神 是对一类事物(那种你看一眼就心跳的人)的描述,是抽象的,概念上的定义;

"对象  是实际存在的该类事物              的个体,因而也称为实例(instance)。"

女帝  是实际存在的该类事物 ( 女神 ) 的个体,因而也称为实例。

结论: 女神 是类,女帝 是实例。懂了没?继续

"类概述每个对象应包括的数据,类概述每个对象的行为特征 "

对象的数据和行为

类    概述                                    每个 对象                                应包括的数据

女神 概述(确定需要哪些标准) 每个 对象(你看到的妹子),应包括的数据(如身高,三围,星座等等)

类    概述                                    每个对象                                  的行为特征

女神 概述(确定需要哪些标准)  每个 对象(你看到的妹子),的行为特征(喜欢什么,讨厌什么等等)

总结:类定义了女神的标准,对象定义了具体的妹子的数据和兴趣爱好。类是抽象概念,看不见摸不着,对象是实际存在的,看得见,摸...的着。

懂了没?还没懂你语文估计是体育老师教的,我已经使出浑身解数来帮你理解了。

继续看看面向对象还有哪些高大上的名词

三大特性是:封装,继承,多态

学面向对象一定要搞清楚这三个概念

封装

看见女神就想冲上去加微信,要号码,甚至还想知道年龄,三围,体重,兴趣爱好?抱歉,这是隐私好嘛!问不到资料怎么办?如果小姐姐对你也有点兴趣,当然会指点你,“后面那个是我闺蜜~”。

所谓的封装其实也是一样,我不直接让你操作和修改数据(女神不直接告诉你他的隐私),但是我会提供操作和修改数据的方法给你(你可以通过她指定的闺蜜了解到她的信息)。

封装就是这个意思,但是肯定有同学会问,道理我懂,那为啥要封装呢?不封装会咋样?来看下面的例子

QQ修改资料

点开你的QQ,到编辑资料,你有没有发现一个问题,性别是可以直接设置的,而年龄是不可以的,QQ只给你设置生日。为啥?这里就有封装的概念了。性别可以设置,因为这个随便改影响不大,并没有错误,比如你把QQ号送给别人,改性别很正常。但是如果你设置了生日,又可以改年龄,那会发生什么?你撩了一个92年出生83岁的奶奶?昨天那个小哥哥说他23岁...生日是73年?看见没,是不是有种天下大乱的感觉?所以最好的方式就是封装年龄这个数据,然后给他一个修改的方法,就是通过修改生日去修改年龄,这样就不会出莫名其妙的错误了。

继承

我们上面说到了,定义一个男神或者女神会用到很多标准(属性),但是会有很多属性是重复的,只有部分标准是不一样的。那当我们定义他们的时候,会有很多重复的操作,我们不妨在男神和女神上面再抽象一层出来,这样会让事情变得简单。

抽象出人这个类

男神,女神都是人,我们把相同的属性抽象出来,作为人这个类。这样我们只需要写一遍(年龄,性别,身高,体重,星座)即可,不用在每个类里面都写这些属性,而女神,男神继承人这个类,就自动获得了人的所有属性,无需再描述。继承是重用代码的重要手段,就是我只写一遍代码,其他需要的地方,"借去"用即可,不需要浪费时间再写一遍。除了重用代码,继承还有扩展的功能。这个又有同学要问了,我觉得 复制粘贴很快啊 ,为啥要这么麻烦?我们看看下面

继续扩展

我们看到,女神还可以分为萝莉和女王,萝莉娇小可爱,女王霸气十足。男神也可以分为大叔和小鲜肉,大叔成熟稳重,小鲜肉阳光有活力。

如果随着我们定义的概念变多,我们不仅需要写更多的代码,而且还会让有关系的概念产生混乱。在实际的项目中,更加复杂的情况比比皆是,如果不能有效的定义关系,不但写的累,而且看不懂。当我们使用继承,不但关系屡的很清楚,而且需要写的代码少很多。

多态

女神的爱好就是多态,看见包就喜欢包,看见表就爱上表,明天看见保时捷就非要买车。你要问我爱好?那得看我心情。

多态涉及的知识较多,这里暂时不展开讲,后面学了更多的知识后,再详细介绍。

好了,本章讲类和对象,是因为下面我们学习代码马上就会接触到类,对象就干脆一起讲了。这只是初步的概述,后面真正讲到面向对象的时候,还会着重讲。大家慢慢消化吧。

关于面向对象 女神告诉你什么是三大特性相关推荐

  1. 面向对象之三大特性:继承,封装,多态

    python面向对象的三大特性:继承,封装,多态. 1. 封装: 把很多数据封装到⼀个对象中. 把固定功能的代码封装到⼀个代码块, 函数, 对象, 打包成模块. 这都属于封装的思想. 具体的情况具体分 ...

  2. 面向对象之:三大特性:继承(已讲),封装,多态

    目录 1.封装 2.多态 3.类的约束 4. super()深入了解 前言: python面向对象的三大特性:继承,封装,多态. 1. 封装: 把很多数据封装到⼀个对象中. 把固定功能的代码封装到⼀个 ...

  3. 04 面向对象之:三大特性:继承,封装,多态

    前言: Python面向对象的三大特性:继承,封装,多态 1.封装:把很多数据封装到一个对象中,把固定功能的代码封装到一个代码块,函数,对象,打包成模块.这都属于封装的思想.具体的情况具体分析,比如, ...

  4. Python面向对象之:三大特性:继承,封装,多态以及类的约束

    前言: python面向对象的三大特性:继承,封装,多态. 1. 封装: 把很多数据封装到⼀个对象中. 把固定功能的代码封装到⼀个代码块, 函数, 对象, 打包成模块. 这都属于封装的思想. 具体的情 ...

  5. 04 面向对象之:三大特性:继承(已讲),封装,多态。

    前言: python面向对象的三大特性:继承,封装,多态. 1. 封装: 把很多数据封装到⼀个对象中. 把固定功能的代码封装到⼀个代码块, 函数, 对象, 打包成模块. 这都属于封装的思想. 具体的情 ...

  6. 夯实Java基础系列1:Java面向对象三大特性(基础篇)

    本系列文章将整理到我在GitHub上的<Java面试指南>仓库,更多精彩内容请到我的仓库里查看 https://github.com/h2pl/Java-Tutorial 喜欢的话麻烦点下 ...

  7. Java学习笔记二十五:Java面向对象的三大特性之多态

    Java面向对象的三大特性之多态 一:什么是多态: 多态是同一个行为具有多个不同表现形式或形态的能力. 多态就是同一个接口,使用不同的实例而执行不同操作. 多态性是对象多种表现形式的体现. 现实中,比 ...

  8. 【Python学习笔记】面向对象三大特性

    2019独角兽企业重金招聘Python工程师标准>>> ★面向对象:封装.继承和多态是面向对象的三大特点★ 面向对象编程简称OOP,是一种程序设计思想.OOP把对象作为程序的基本单元 ...

  9. C#面向对象三大特性之二:继承

    面向对象的三大特性之一的封装,解决了将对同一对象所能操作的所有信息放在一起,实现统一对外调用,实现了同一对象的复用,降低了耦合. 但在实际应用中,有好多对象具有相同或者相似的属性,比如有一个对象 果树 ...

最新文章

  1. sysbench的安装详解
  2. zabbix监控实践解析(历史记录附近乱码、图表显示乱码)
  3. Linux 解压命令
  4. P2839 [国家集训队]middle(二分 套 主席树)
  5. guava 集合转换_Guava的Collections2:过滤和转换Java集合
  6. 群晖docker签到京豆_利用Synology(群晖)Docker安装签到框架
  7. Linux命令kill和signal
  8. 那些在11gR2中可能惹祸的新特性,一张列表帮助你摆脱升级11gR2带来的烦恼
  9. 问世 20 多年的 PHP 还是最好的编程语言吗?
  10. petshop 数据库
  11. h5调用摄像头扫二维码_你的H5还没有升级到小程序吗
  12. torch.optim.lr_scheduler:调整学习率
  13. C语言终极贪吃蛇代码,直接COPY上手。
  14. 英语在线发音linux,英语单词在线发音
  15. 使用RssHub为网页生成RSS订阅源
  16. 如何自定义Chromecast的背景以显示个性化图片,新闻等
  17. 【autojs】Auto.js Pro免root打开无障碍服务(需adb授权,重启手机不失效)脚本源代码
  18. 什么是等级保护?等保二级和三级的区别?
  19. android studio上的基本动画实现(第一篇)
  20. 大众媒体互联网计算机的英语作文,英语作文:大众传媒的优缺点

热门文章

  1. 数量性状基因座QTL及其作图
  2. TableLayout 和 GridLayout 的区别
  3. TableLayout布局
  4. hexo搭建博客教程(matery主题)
  5. 计算模型的FLOPs
  6. java中常用的加密工具類
  7. Golang基础知识--十安辰
  8. SAP 预制凭证小结
  9. 动态规划训练1-天天向上
  10. java实习生年终总结_【JAVA实习生工作总结_JAVA实习生个人年终总结】-看准网