若是上帝是程序员,他是如何创造世界上全部动物的?

tips:本文尽可能用朴实易懂的语言来解释面向对象的思想。程序员

荒古时期

上帝首先创造了几个原始类 original class。例如:动物类Animal,植物类Plant,地形类Topography,气象类Atmosphere等做为地球上一切物质的开端,而本文咱们将使用动物类做为例子。code

分类而生

在创造了动物类Animal以后,为它添加了公共属性mouth:true公共方法eat(){},mating(){}对象

以后他决定开始细分,这里咱们作的简单一点,并不按照“界门纲目科属种”的分类依据,而是直接按照人类Human,猫类Cat,狗类Dog 等进行细分。继承

他根据动物类Animal创造了人类Human,咱们能够说,人类继承自动物类,因此人类这个类中也会存在动物类的公共属性和公共方法。一样的,人类也有本身的公共属性stand:true公共方法farming(){} 。而后,上帝根据人类Human创造了一我的:小明。接口

小明是一个根据Human创造出的实例对象,20岁的会弹钢琴的男性程序员,他同时继承AnimalHuman类的公共属性公共方法ip

mouth:true,
stand:true,
farming(something){
    ...
},
eat(something){
    ...
},
mating(someone){
    return xxx
}

而他的私有属性occupation:programmer私有方法playingPiano(){...},小明把他的我的状况都藏起来【封装】,只有他告诉别人本身的状况,别人才会知道,并且别人不知道他会弹什么曲子的,只能说“小明你弹个钢琴给我听一下”。调用
小明.playingPiano()封装以后只有对外提供接口后才可使用io

有一天,小明认识了一个女生小白,小白是一个21岁的会唱歌的客服,私有属性customService私有方法singing(){...}。后来他们谈恋爱而且结婚了,有一天小明调用了本身的方法mating,并将小白做为参数传入,随后return出了一个孩子:小黑。可是小黑并无继承小明的playingPiano和小红的singing,反却是有了本身的私有属性tellingStory。但惟一和小明还有小红同样的是,他继承了动物类Animal和人类Human公共属性公共方法class

与此同时,另外一对夫妻小华和小花,他们也调用了本身的mating,可是 return 的是另外一个与小黑不一样的孩子——小月,她的私有属性与她的父母都不一样,是playingBasketball,但一样的,她也继承了动物类Animal和人类Human公共属性公共方法程序

为何都调用了mating方法,返回的孩子却不同呢?这就是多态。当同一个操做(方法)做用与不一样的对象时,会产生不一样的执行结果。方法

以上,面向对象的三个基本特征 封装、继承、多态 都讲完了。确定讲的不够深刻,若是有什么理解上不正确的欢迎在评论区中指正,也欢迎你们讨论。

相关文章
相关标签/搜索