java零基础入门-核心语法篇(三)
教材描述问题首先要考虑的就是严谨,不能有错误,但是正是因为严谨,导致语义晦涩难懂,所以往往成了劝退教材。有些看上去高大上,让人摸不着头脑的词,一旦你理解了,发现也就那么回事,并没有什么深不可测的东西,下面我们来揭开他们的神秘面纱吧。
说人话系列开讲!!!
学java你肯定听过这几句话,面向对象编程?一切都是对象?
对象是啥?
先来看看教材上的描述:
具有相同或相似性质的一组对象的抽象就是类,类是对一类事物的描述,是抽象的,概念上的定义;对象是实际存在的该类事物的个体,因而也称为实例(instance)。
对象的抽象化是类,类的具体化就是对象,也可以说类的实例是对象。类用来描述一系列对象,类概述每个对象应包括的数据,类概述每个对象的行为特征。因此,可以把类理解成某种概念,定义,它规定了某类对象所共同具有的数据和行为特征。 ------摘至《疯狂java讲义 第二版》
看完大神的描述你有啥想法?我当时看到这,不仅仅是一脸懵逼,是N脸懵逼...
要想彻底理解这个概念,必须要有一点点抽象思维。举个例子,我们都有心中的女神和男神,但是女神和男神也许并不是唯一的,但是我们脑海里会有一个潜意识,就是当我看一眼这个人,就会默认把他划分为女神或者男神。这个意识是啥?就是你对女神或男神的抽象,这只是一个你定义女神,男神的标准,但这个标准你是看不见摸不着的。
比如你定义一个女神:身高XXX,肤白貌美,前凸后翘,腰细腿长,瓜子脸,翘鼻子大眼睛浓眉毛,看一眼就让人神魂颠倒,心跳加速。
女帝符合我定义的所有标准,所以他是女神。我们再来看这句话 :
"类 是对一类事物 的描述,是抽象的,概念上的定义"
女神 是对一类事物(那种你看一眼就心跳的人)的描述,是抽象的,概念上的定义;
"对象 是实际存在的该类事物 的个体,因而也称为实例(instance)。"
女帝 是实际存在的该类事物 ( 女神 ) 的个体,因而也称为实例。
结论: 女神 是类,女帝 是实例。懂了没?继续
"类概述每个对象应包括的数据,类概述每个对象的行为特征 "
类 概述 每个 对象 应包括的数据
女神 概述(确定需要哪些标准) 每个 对象(你看到的妹子),应包括的数据(如身高,三围,星座等等)
类 概述 每个对象 的行为特征
女神 概述(确定需要哪些标准) 每个 对象(你看到的妹子),的行为特征(喜欢什么,讨厌什么等等)
总结:类定义了女神的标准,对象定义了具体的妹子的数据和兴趣爱好。类是抽象概念,看不见摸不着,对象是实际存在的,看得见,摸...的着。
懂了没?还没懂你语文估计是体育老师教的,我已经使出浑身解数来帮你理解了。
继续看看面向对象还有哪些高大上的名词
三大特性是:封装,继承,多态
学面向对象一定要搞清楚这三个概念
封装
看见女神就想冲上去加微信,要号码,甚至还想知道年龄,三围,体重,兴趣爱好?抱歉,这是隐私好嘛!问不到资料怎么办?如果小姐姐对你也有点兴趣,当然会指点你,“后面那个是我闺蜜~”。
所谓的封装其实也是一样,我不直接让你操作和修改数据(女神不直接告诉你他的隐私),但是我会提供操作和修改数据的方法给你(你可以通过她指定的闺蜜了解到她的信息)。
封装就是这个意思,但是肯定有同学会问,道理我懂,那为啥要封装呢?不封装会咋样?来看下面的例子
点开你的QQ,到编辑资料,你有没有发现一个问题,性别是可以直接设置的,而年龄是不可以的,QQ只给你设置生日。为啥?这里就有封装的概念了。性别可以设置,因为这个随便改影响不大,并没有错误,比如你把QQ号送给别人,改性别很正常。但是如果你设置了生日,又可以改年龄,那会发生什么?你撩了一个92年出生83岁的奶奶?昨天那个小哥哥说他23岁...生日是73年?看见没,是不是有种天下大乱的感觉?所以最好的方式就是封装年龄这个数据,然后给他一个修改的方法,就是通过修改生日去修改年龄,这样就不会出莫名其妙的错误了。
继承
我们上面说到了,定义一个男神或者女神会用到很多标准(属性),但是会有很多属性是重复的,只有部分标准是不一样的。那当我们定义他们的时候,会有很多重复的操作,我们不妨在男神和女神上面再抽象一层出来,这样会让事情变得简单。
男神,女神都是人,我们把相同的属性抽象出来,作为人这个类。这样我们只需要写一遍(年龄,性别,身高,体重,星座)即可,不用在每个类里面都写这些属性,而女神,男神继承人这个类,就自动获得了人的所有属性,无需再描述。继承是重用代码的重要手段,就是我只写一遍代码,其他需要的地方,"借去"用即可,不需要浪费时间再写一遍。除了重用代码,继承还有扩展的功能。这个又有同学要问了,我觉得 复制粘贴很快啊 ,为啥要这么麻烦?我们看看下面
我们看到,女神还可以分为萝莉和女王,萝莉娇小可爱,女王霸气十足。男神也可以分为大叔和小鲜肉,大叔成熟稳重,小鲜肉阳光有活力。
如果随着我们定义的概念变多,我们不仅需要写更多的代码,而且还会让有关系的概念产生混乱。在实际的项目中,更加复杂的情况比比皆是,如果不能有效的定义关系,不但写的累,而且看不懂。当我们使用继承,不但关系屡的很清楚,而且需要写的代码少很多。
多态
女神的爱好就是多态,看见包就喜欢包,看见表就爱上表,明天看见保时捷就非要买车。你要问我爱好?那得看我心情。
多态涉及的知识较多,这里暂时不展开讲,后面学了更多的知识后,再详细介绍。
好了,本章讲类和对象,是因为下面我们学习代码马上就会接触到类,对象就干脆一起讲了。这只是初步的概述,后面真正讲到面向对象的时候,还会着重讲。大家慢慢消化吧。