tips:本文尽可能用朴实易懂的语言来解释面向对象的思想。
程序员
上帝首先创造了几个原始类 original class
。例如:动物类Animal
,植物类Plant
,地形类Topography
,气象类Atmosphere
等做为地球上一切物质的开端,而本文咱们将使用动物类做为例子。code
在创造了动物类Animal
以后,为它添加了公共属性:mouth:true
和公共方法eat(){},mating(){}
。对象
以后他决定开始细分,这里咱们作的简单一点,并不按照“界门纲目科属种”的分类依据,而是直接按照人类Human
,猫类Cat
,狗类Dog
等进行细分。继承
他根据动物类Animal
创造了人类Human
,咱们能够说,人类继承自动物类,因此人类这个类中也会存在动物类的公共属性和公共方法。一样的,人类也有本身的公共属性stand:true
和公共方法:farming(){}
。而后,上帝根据人类Human
创造了一我的:小明。接口
小明是一个根据Human
创造出的实例对象,20岁的会弹钢琴的男性程序员,他同时继承了Animal
和Human
类的公共属性和公共方法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
方法,返回的孩子却不同呢?这就是多态。当同一个操做(方法)做用与不一样的对象时,会产生不一样的执行结果。方法
以上,面向对象的三个基本特征 封装、继承、多态 都讲完了。确定讲的不够深刻,若是有什么理解上不正确的欢迎在评论区中指正,也欢迎你们讨论。