什么是多态
多态,简单来说,多态是具有表现多种形态的能力的特征;同一个实现接口,使用不同的实例而执行不同操作。它和封装、继承一样也是面向对象的一大特点。
多态可以分为静态多态和动态多态,静态多态就是我们常说的方法的重载,而动态多态必须要具备三个条件。
动态多态发生的三个必要条件:
1.要有继承或实现;
2.要有重写;
3.发生上溯造型;
上溯造型
上溯造型是指父类引用指向子类对象(可以理解为花木兰替父从军)。
发生上溯造型的前提是,子类必须具有继承或实现关系。
发生上溯造型的对象只向外界公开其从父类继承过来的属性和方法,隐藏了自己扩展的属性和方法。
需要注意的是,当发生上溯造型时:1.子类没有重写父类方法时,调用执行的是父类的方法。
2.子类重写了父类方法时,调用执行的是子类重写后的方法。
3.子类与父类拥有同名变量时,无论子类怎样改值,变量值永远跟父类的变量值保持一致。
下溯造型
下溯造型可以通俗的理解为花木兰替父从军归来做回花木兰,所以发生下溯造型的前提就是,必须先发生上溯造型。也就是说,子类对象可以向上直接转型成父类对象,但是父类对象不能直接向下转型成子类对象。
基本格式: 子类型 变量名 = (子类型) 变量名;