战国时期,有个叫公孙龙的家伙说:“马者,所以命形也;白者,所以命色也。命色者非命形也,故曰白马非马。”
这在古时,有哲学启蒙的以为。将人们习焉不察的事反转,让人们开始思考事情的本质特征。
然而今天,坚持这样的说法就算是诡辩了。我们的知识体系有了较为完备的定义,你说白马非马,那人们就反驳说,白马属于动物中的脊椎动物中的哺乳动物中的马类中的某种马的白色的马。
我今天想说的是面对对象程序设计。今天开始上课了,老师讲了一节课的概念与介绍,我居然听出了哲学的味道。
面对对象,明白对象是什么。老师先让我们描述一下自己的单车,有人说,两个轮子,一个座位,一条链子,一个踏板……
老师问,你们能在脑海中勾勒出他单车的模样吗?这种描述就像你给别人介绍你的朋友的时候说,他有一个头,两只胳膊,两条腿。这只是形而上学,确定的仅仅是一个结构,这是远远不够的。
我们还是不能从茫茫人海找到这个人。所以我们介绍人的时候,首先是各自有一个统一的定义,然后给别人描述一些特征,比如,年纪,性别,发色,身高,是否戴眼镜,今天穿了什么样的衣服……
一个属于某类的对象称为该类的实例。他除了所拥有这个类别的共性之外还有自身的特性。所以除了说他是一个人以外,还得描述他的具体特征。
这里涉及了几个级别的继承。上级被称为父类或基,下级称为子类或派生,子类继承了父类的所有属性。
比如,哺乳动物有热血,有毛发,用奶哺育幼崽。狗是哺乳动物,所以狗具有哺乳动物的上述特性,但也具有自身的特性,有尖牙利齿,食肉,群居,有特定的骨骼结构。
和三段式有些像的,一个大前提,一个小前提,导出结论。
继承又分为单继承和多继承。单继承类似于英语里的派生词,词根就是所谓的基。比如窗口可以分为对话窗口和执行窗口。多继承是属性的叠加,比如玩具车就具备了玩具和车的属性。
封装是面对对象的另一个特性,类似于不可更改的黑匣子。将既定的事实封装起来,避免意外更改或者蓄意更改,是数据的一种保护手段。
封装的信息只接受系统执行变更,不接受端口的信息录入,这就保护了信息的稳定性。
如银行里的信息:
balance就是被封装起来的信息,不可以人为更改。只有经过withdraw,deposit,transfer等操作后由系统执行并校正数值。
多态是面对对象程序设计的又一个特性,同一操作作用于不同的对象,可以有不同的解释,产生不同的执行结果。在运行时,可以通过指向基类的指针,来调用实现派生类中的方法。
上帝的骰子不会总是六点,上帝也不会总是掷骰子。
突然想起《秦时明月》里公孙玲珑和天明关于白马非马的辩论。公孙玲珑破口大骂:我不管白马黑马,你还我家那匹祖传的马。
欲破其刚,先乱其心。
引以为戒。
网友评论