多态性,顾名思义是多种状态的性质。
在面向对象的编程语言中,子类通过实现父类当中的抽象方法,实现了多个子类对于同一种方法的多种不同实现,在传递父类指针或引用时,即可调用不同子类的实现方法。
在java语言中,变量的实体类型也可以看做是多态的实现。每一个变量的实体类型(Integer,String,Float,或是自己定义的class),均继承于Object,在Object中有这些实体类型的equals和hashcode的通用实现,必要时进行重写,所以可见,对象中保存着有关自己种类的信息,但又有其父类通用的实现,这就是为什么在进行Integer类型的比较时,要用A.equals(B),而不能用==。
对于像ruby,lisp这一类的动态编程语言来说,某个变量可以用各种类型的数据来赋值,程序执行时可以根据数据类型的不同来自动选择合适的处理方法,因此可以看做是变量多态性的一种体现,执行时才会进行类型检查,所以一旦发现有不正确的处理,程序就会停止执行。但是不执行程序的话是无法知道哪儿有错误的。