这篇博客主要记录一下我对Java面向对象思想的理解,以便多年以后再做比较
首先自己画的一张图
面向对象:封装、隔离和重用
这句话当然不是我总结出来的。学了这么久的面向对象,上了许炜老师的java课突然有种茅塞顿开的感觉。觉得老师的这句话很有道理,便想写一点自己的理解(大部分来自老师)并记录下来。
封装
将属性和方法放在一起,不是这个类的属性和方法绝对不会添加进来。
这样产生的才是一个类。人为什么不同于桌子?人的属性和方法不一样,桌子没有性别,桌子不会说话。于是桌子和人就区分开了,就成了两个类。
封装的好处呢?首先,程序很清晰,由对象即可知道属性和方法的主体,各人自扫门前雪。
其次,很安全,封装的目的就是在于将属性的控制权掌握在自己手里。想想如果桌子可以控制你的性别是多么可怕,人应该对自己的属性负责,我想告诉你我的什么属性完全由我自己来决定,你能改变我哪一点也完全由我控制。
而这一切都是通过权限控制来实现(private, public, protected, friendly)。
通过封装,Java对象实现了各人自扫门前雪,我的人生我做主。
隔离
隔离就是将类的实现与使用分开。每个可以动的人可能各不相同,但是我不管你是什么样的人,我就是想让你动一下。这样的好处就是我不用去细细区分学生,教师,农民等等人的身份,我使用起来很方便。
这是通过上溯和多态来实现的,上溯即子类对象传给父类句柄,父类句柄即可对子类对象操作。那为什么不直接通过子类句柄操作呢,因为我不想具体到个人啊,也完全没有必要啊。
那多态是什么呢,可以说多态是上溯产生的效果。同样的调用一个方法(方法名和参数一样),不同的子类会产生不同的结果,这样才能世界如此多娇嘛。
那如何理解隔离呢,有没有发现当我们把对象赋值给父类句柄之后,我改变一下方法的内容你该怎么调用还是怎么调用,子类想怎么实现就怎么实现。
就像你本来很高兴,我让你动你会跳着蹦哒蹦哒,然后你不开心了,让你动你就懒散地走两步。我才不管你怎么动呢,我只负责管理你,让你动起来。
子类通过把身心交给党来听党指挥能打胜仗作风优良,关于你怎么打仗不还是看你个人到战场上的发挥嘛。
通过隔离,Java实现了对象如此多娇,爸爸再也不用担心你的学习了。
重用
重用的实现主要是靠继承,子类继承父类,就像人类的财富继承一样,富二代不用努力也很有钱,父类的属性和方法不用再从头实现。可是子类和父类总有些不大一样,这就可以通过新增自己的属性和方法或者覆写父类的方法来实现。这样一来,世界才能向前发展,才能越来越美好。
那接口是用来干什么的呢?只是继承就像是纵向的扩展,可是这种扩展并不能满足需要,接口则负责横向的扩展。接口更偏向于一种能力,一种标准。接口可以看作是对继承的补充。人和狗都能跑,这是一种能力,可是把人和狗都看作由一个基类继承而来又有些牵强,毕竟两者很不一样,这时候接口的作用就体现出来了。
通过重用,Java实现了遍地都是富二代,理想社会不再是梦。
所以说你还在等什么,搞了Java,你就是人赢啊!