目录
多态:一个引用可以表现出多种行为或者特性
一、多态的引出
在生活中,比如养了一种小狗,你给它起名叫大黄,别人看见了叫狗狗,当狗要吃饭时,你说大黄来吃饭了,别人说狗狗来吃饭了,在这个场景下,其实指向的是同一个对象,只是对象的名称不同,这就是简单的多态。
二、向上转型
1、向上转型的引出
Dog dog=new Dog();
类名称 类引用=new 该类对象();这是我们最常用到的产生对象的方式。
引出:
Animal animal=new Dog();
父类名称 父类引用=new 子类对象();
在这种产生对象的方式中,存在一个天然语义Dog is an Animal。
所以我们将这种产生对象的方式叫做向上转型,向上转型发生在有继承关系的类之间。
2、向上转型的意义
向上转型最大的意义在于参数统一化,降低使用者的使用难度
(1)提出问题
如果没有向上转型
①作为类的实现者来说,fun方法接受Animal以及其子类的对象作为参数,Animal有多少子类,fun方法就要重载多少次。联想生活,在大自然中,Animal动物的子类有几百万种,那么fun方法就要重载几百万次,十分的累。
②作为类的使用者来说,我要使用fun方法,我就要了解Animal以及其子类的所有对象,我才可以直到我调用的是谁,同样十分的累。
(2)解决问题
既然子类时天然的父类,那么为何不用父类去指代所有的子类的——向上转型
可以发现,只要是Animal及其子类,都是天然的Animal对象,通过最顶层的父类引用Animal来指代所有的子类对象。
总结:在继承关系中,当存在向上转型时,最顶端的父类就可以指代所有的子类对象,并且当Animal有一个新的子类时,是非常容易扩展的。