--------
多态的三个条件:1.要有继承。2.要有重写。3.父类引用指向子类对象
三个条件缺一不可, 只针对与方法,对成员变量无效的
/*
父类
*/
public class Animal {
public void sayHello(){
System.out.print(" Hello !");
}
}
/*
子类
*/
public class Cat extends Animal{
public void sayHello(){
System.out.print(" Hello from cat !");
}
}
/**
* 测试类
*
*/
public class Test {
public static void main(String[] args) {
//父类对象实例化一个父类对象
Animal animal = new Animal();
animal.sayHello();
System.out.print("\n");
//父类对象指向子类实例化的对象
Animal cat = new Cat();
cat.sayHello();
System.out.print("\n");
//之类对象实例化一个之类对象
Cat catt = new Cat();
cat.sayHello();
}
}
运行结果:
Hello !
Hello from cat !
Hello from cat !
分析:
不难发现,cat是一个父类的对象,而由于指向了子类的一个实例,所有它实际上引用的是一个子类,从而调用sayHello这个方法是子类的方法,这就是多态。