面向对象编程领域有个非常重要的概念,那就是多态,但是你真的理解这到底是什么意思吗?程序员该如何理解多态?
英文中的多态
多态一词其英文为“polymorphism”,在讲解多态之前让我们来分析一下这个单词。
这个单词其实包含了两部分,一部分是poly;另一部分是morph,这两个词在希腊语中是很多词的词根。
- poly,在希腊语中原指许多的意思,
- morph,原指形态,
- 现在这两个单词拼凑在一起的polymorphism意思就直白多了,在编程语言当中,面向对象编程有三大特性:封装、继承、多态。
多态啊 就是同种类型的对象,表现出的不同形态
多态的表现形式就是把子类的对象赋值给他父类的类型
封装隐藏了类的内部实现机制,可以在不影响使用的情况下改变类的内部结构,同时也保护了数据。对外界而已它的内部细节是隐藏的,暴露给外界的只是它的访问方法。
当这样的javaBean类越来越多之后 类里面重复的内容就越来越多了
我们怎么解决的? 我们就要把同一类事物中共性的内容都抽取的父类里面,在子类里面我们就不需要再写一遍了从而提高了代码的复用性 在子类中可以访问父类中非私有的成员这就是继承。我们用继承去解决javaBean中代码重复的问题 。那么这个继承也是多态的前提条件
继承是为了重写父类代码。两个类若存在IS-A的关系就可以使用继承。,同时继承也为实现多态做了铺垫。多态是指用相同的接口去表示不同的实现。也就是父类引用指向子类对象
但是呢多态不是一个随便的人,不是想写就能写的 需要一些前提条件
我们可以用new关键字去创建一个学生对象 把这个对象赋值给 Student 类型
那就表示这个Student对象是学生形态 这也是我们以前创建对象的方式
有了多态以后我们在创建对象的时候还可以这么玩 可以把学生对象赋值给他的父类类型 Person。
那就表示这个学生对象是人的形态 那此时学生对象就有了两种形态 一个是学生形态 一个是人的形态这就是多态
例子
StringBuilder append
ArrayList