我对面向对象的理解

如果理解有误,请大家指正交流

请大家,跟着想象如下场景。

我是一个程序员,我现在坐在计算机面前,而我现在周围是什么,是现实世界

在这个现实的世界中,有很多东西,比如,你旁边一本书,一支笔,一部手机,或者是喝水的杯子,这些事物都是实实在在的存在于现实世界里的。你随手拿起了笔,你观察它,描述它,用程序员的思维去抽象它,于是它在程序员的脑海里就形成了一个什么是笔的想法,你根据这个想法,是可以造一支笔的。这个想法相当于造笔的一个草图,或者模板,叫做笔的,类产生于程序员的脑海。你把这个模板交给了计算机,计算机在它的世界里产生了一支笔,我们称它为笔的对象

在这个过程中,程序员做了一件事,就是编程,将脑海里的草图,敲成代码,就叫做编程,更具体点是叫做面向对象编程。我们来理解下面向这两个字。首先,是谁在面向,是处在计算机世界外面的程序员在做这个面向的动作。其次,对象,是在计算机里的,面向是一种程序员的朝向,指向。目标,要达成的是什么,是对象。就是朝着计算机里的对象进行努力。在这个过程中,我们如何去判定程序员是不是在面向对象编程呢?

1.是不是在需要的时候,做了封装。

2.是不是在需要的时候,做了继承。

3.是不是在需要的时候,做了多态。

封装:笔,在现实世界中,你观察它的时候,你只能看到笔的外形,笔的内部构造结构你是无法从表面上了解到的。于是你在形成关于笔的类的时候,也应该是对外暴露笔的外形,而不对别的对象暴露笔的内在。

继承:继承就是一系列属于的关系。圆珠笔属于笔,钢笔属于笔,毛笔也属于笔。于是笔可以作为基础模板,拥有笔的公共特征,比如都是圆柱体,都可以写字。当你发现事物之间有属于的关系的时候,你就该考虑是否使用继承。

多态:当圆珠笔从笔身上继承了公共特征时,圆珠笔说它有比圆柱体更具体的外形。钢笔有比圆柱体具体的外形且不同于圆珠笔,毛笔也有比圆柱体更具体的外形,且不同于前二者。不仅外形,写出来的字,也是各有特征。什么是多态,就是不同的子在继承父的时候,子形成各自更具体的特征或者功能,而没有限制其只能使用继承过来的特征或功能,于是形成了多姿多彩的子。就像你看到的现实世界中不同的笔,不同的多姿多彩的花,不同的鱼。它们有同,但更吸引人的是这些不同。类似,计算机中要去表现这些同中的不同,需要的是什么,是多态被允许。多态是自然而然的产生的,理所当然的,就像你认为圆珠笔和钢笔理所当然不同,你在写代码的时候,不自觉的就在继承的过程中,写了子类里各自对父成员的特异性实现,以致于我们以为自己什么都没做,其实你已经做了,你已经为这些不同做了贡献了。

体现多态的场景介绍:对象是有类型的,每一个对象都有属于它的类型。比如钢笔对象,程序员可以给它两种类型可以选择,一个类型是钢笔类型,一个是笔类型。当钢笔对象被告知它的类型是笔类型的时候,钢笔对象就傻逼的只知道笔这个类型里的具有的特征和功能了,而忘记了比如它还有其它功能,比如忘了还有一个可以按上按下的开关,这个时候,钢笔对象认为他是笔。类似,圆珠笔对象也认为它是笔类型。毛笔对象也认为它是笔类型。于是都是笔类型,这些对象调用相同的功能,写功能的时候,圆珠笔对象写出了圆珠笔对象特异的字,钢笔对象却写出来了钢笔对象特异的字,毛笔对象写出来毛笔对象特异的字。

posted @ 2020-12-21 01:48  ~颖帅~  阅读(64)  评论(0)    收藏  举报