多态(polymorphism)

在编程语言和类型论中, 多态 指为不同数据类型的实体提供统一的接口。 多态类型 (英语:polymorphic type)可以将自身所支持的操作套用到其它类型的值上。


计算机程序运行时,相同的消息可能会送给多个不同的类别之对象,而系统可依据对象所属类别,引发对应类别的方法,而有不同的行为。简单来说,所谓多态意指相同的消息给予不同的对象会引发不同的动作。


多态也可定义为“一种将不同的特殊行为和单个泛化记号相关联的能力”。


多态指的是同一个方法调用,由于对象不同可能会有不同的行为。现实生活中,同一个方法,具体实现会完全不同。比如:同样是调用人“吃饭"的方法,中国人用筷子吃饭,英国人用刀叉吃饭,印度人用手吃饭。


多态的要点:

1、多态是方法的多态,不是属性的多态(多态与属性无关)。


2、多态的存在要有3个必要条件:继承,方法重写,父类引用指向子类对象。


3、父类引用指向子类对象后,用该父类引用调用子类重写的方法,此时多态就出现了。


对象的转型(casting)

1、父类引用指向子类对象,我们称这个过程为向上转型,属于自动类型转换。


2、向上转型后的父类引用变量只能调用它编译类型的方法,不能调用它运行时类型的方法。这时,我们就需要进行类型的强制转换,我们称之为向下转型