多态是一种机制,它体现了程序的可扩展性。在面向对象程序设计中,描述一个对象时,多态指的是一个对象的行为方式可以由多种形态,即根据对象的不同进行不同的操作,因此多态是与具体对象关联的,这种关联叫做绑定。绑定分为静态绑定和动态绑定,静态绑定是在编译时完成的,动态绑定则是在程序运行时完成的。
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());
}
}