前两天吃饭的时候,姐夫介绍面人的经验,提到一个小诀窍。有个问题可以全面地考察到面试者的技术基础,表达能力,逻辑能力,反应能力,真是一举多得。这个让他屡试不爽的问题就是:请用最浅显易懂的语言描述一下什么是面向对象。
果然把我一下给问懵了,都不知道第一句话从何开始。从此下定决心,好好地磨练一下自己的技术基础,表达能力,逻辑思维能力。。。。写博客就谈不上反应能力了。
言归正传,什么是面向对象呢?不搜集资料,尝试用我自己的语言描述,是这样的
世界的每一个具体事物都可以看成是一个对象。把某些对象的相同的属性和行为特性集合起来构成一个抽象概念叫做类。比如人类,人都有五官,四肢,都能直立行走,会独立思考。这些特性把人和别的物种区分开来。其中,五官和四肢是人的属性的一部分,行走和思考是人的行为特性。人类只是一个抽象的概念,它并不对应具体的物体。而真实存在的某个人,比如张三、李四,才是可以称作是一个对象。
人类里面可以再分类,比如男人和女人。这两类都具有人类共有的特性,但是还可以找到一些其他的特性来区分他们。比如女人生孩子,穿裙子, 而男人不会,等等。那么,当你定义一个女人为人类的继承类时,女人除了自动继承人类的特性,还可以另外定义一些属性和行为,比如生孩子,哺乳。这些属性和行为是将女人和另一个类别——男人区分开来。而某个具体的女人,比如武则天,则可以称作是女人类别里面的一个对象。
对于一个类别里面定义好的行为,可以根据子类的不同进行不同的实现。比如人类的行走,男人行走大步流星,女人行走则是小碎步。如果只是在人类里面就定义好行为这个特性,并不实现它。而是在男人和女人各自继承的行走特性里,做好不同的实现。这样,当你定义一个男人的对象时,也可把它看做是一个人类的对象,当这个人类的对象行走时,他会自动选择用男人的方式来行走。也可以这么说,相同类别的对象们,根据自己所属子类的不同而对同一行为做出不同的表现。这就叫多态。