上周复习了什么是面向对象编程,这周扩展一下面向对象编程的一些基本特征,声名在外的三大基本特征就是封装、继承、多态。
面向对象编程,就是我们把现实中待解决的问题按类型抽象化成一个个具体的对象,通过对对象的操作,达到解决问题的目的。我们抽象出来的每一个对象,必定是具有某一类特征,或者是赋予一些特定的的操作。
或者说,我们创建好一个类(抽象的类型),根据这个类,可以创建不同的对象。比如你、我是两个对象,但我们都是人类,我们在人类这个类型里定义了身高、体重这些属性,赋予了吃饭、睡觉这些行为操作,人类的每个对象你、我、他有不同的身高体重,吃不一样的饭睡不同的觉,每个对象有不一样的生活,不同的方式解决各种“人生问题”。
什么是封装特性呢?得先从面向对象程序设计的从业人员说起,也就是我们程序猿,从这方面来看大致分两类,一类是“类创建者”(定义、创建新数据类型的人),一类是“类利用者”(在自己的应用程序中采用现成数据类型的人,根据类创建对象就可以利用类的数据类型)。我是一个类创建者,我创建了一个类,我的类会被多个利用者用到,如果你能随意修改我的类,那么对其他利用者就会有影响,比如,我定义的是一个鼻子两只眼睛的类属性,你给我修改成了三只眼睛,但其他人并不想成为二郎神啊,所以我需要把我的类封装起来,设定一些访问权限,想开放还是私藏我说了算。
我费尽心思,耗费百万脑细胞设计出一个类,刚乐呵了一阵,出现了一个新需求,功能和之前的大致相同,差异微小。如果我不能直接利用已经成型的类,那简直太惨无人道了。有什么办法能直接利用呢?非常简单,叫一声爸爸,新类就可以直接“继承”之前那个类的百万家产了,想用什么,就用什么,当然,除了爸爸设定权限为私有的。而你只用创造时代 变化带来的新需求部分就可以了。
我继承了我爸爸的家产,要是我和他一模一样没有什么变换,那我都要怀疑自己存在的意义了,不行,我要活出多姿多彩的形态,要有不一样的人生。我爸有赚钱这个技能,当然,我也有,可是嫌他的赚钱技能比较low,他就只是宰牛卖牛肉,我要搞点花样,开连锁生鲜超市且线上线下同步销售。你看,虽然我们的技能名字都叫赚钱,但是我“重写”了属于我时代的代码。
我心思活络,不仅在这方面追求多态,实现其他人生目标方面,我也不拘一格,实现同一个目标,我会挑战用不同的条件去实现,比如eat(chopsticks),还可以同时存在eat(knives,forks)。这又是我人生“多态”的另一面,不断“重载”掉之前的方法参数,多态性最具代表的就是重写、重载。
面向对象的三个基本特性就是这些了,这种编程方式最大的优势就是提高了代码的重用性,最直接的表现就是对代码的有效管理,以避免程序过大造成的代码混乱,提高开发效率,降低代码维护成本。
最后这个总结比较官方
!
领取专属 10元无门槛券
私享最新 技术干货