面向对象编程领域有个非常重要的概念,那就是多态,但是你真的理解这到底是什么意思吗?程序员该如何理解多态?
英文中的多态
多态一词其英文为“polymorphism”,在讲解多态之前让我们来分析一下这个单词。
这个单词其实包含了两部分,一部分是poly;另一部分是morph,这两个词在希腊语中是很多词的词根:
-
poly,在希腊语中原指许多的意思,包含poly这个词根的有:polygon,即多边形;polygolt,即多语言。
-
morph,原指形态,包含morph这个词根的有:morphology,即形态学;morpheus,即希腊神话中的梦神,可以幻化成任何形态,值得一提的是,电影《黑客帝国》找到Neo的男主角之一就叫morpheus,中文译作了墨菲斯。
现在这两个单词拼凑在一起的polymorphism意思就直白多了,在编程语言当中,多态是指用相同的接口去表示不同的实现。
加一点代码:为什么使用多态
让我们用一点代码来说明问题,假设代码中有三个class: 自行车(Bicycle)、汽车(Car)和卡车(Truck),这三个class分别有这样三个实现:Ride()、Run()、Launch(),实际上都是让它们发动起来,如果没有多态的话我们该怎样开动它们呢?(注意这里没有采用特定语言,因为多态是一个通用的概念)<