多态是一种机制,它体现了程序的可扩展性。在面向对象程序设计中,描述一个对象时,多态指的是一个对象的行为方式可以由多种形态,即根据对象的不同进行不同的操作,因此多态是与具体对象关联的,这种关联叫做绑定。绑定分为静态绑定和动态绑定,静态绑定是在编译时完成的,动态绑定则是在程序运行时完成的。
java类中方法的重载呈现出多态的特性,它属于静态绑定,是静态多态性。绑定与类的继承相结合即方法的重写,可体现出动态绑定的多态特性,即动态多态性。它在执行期间判断所引用对象的实际类型,根据其实际的类型调用其相应的方法。动态多态性存在的3个条件是:继承、方法重写、父类引用指向子类对象。
示例:
//父类:Animal.java public class Animal{ String name; Animal(String name){ this.name = name; } public String eat(){ return "吃食物"; } } //子类 public class Cat extends Animal{ Cat(String name){ super(name); } public String eat(){ return "吃鱼"; } } //子类 public class Dog extends Animal{ Dog(String name){ super(name); } public String eat(){ return "吃肉"; } } //Test public class Test{ public static void main(String args[]){ Animal c = new Cat("小猫"); Animal d = new Cat("小狗"); System.out.println(c.name + c.eat()); System.out.println(d.name + d.eat()); } }