父类引用指向子类对象,是多态的一种形式,就是将子类对象的堆内存地址,赋给父类引用类型的变量。
这种形式称为向上转型。向上转型是自动的。
还有另一种形式,子类引用指向父类的对象, 就是想父类对象的堆内存地址,赋给子类引用类型的变量。这种形式称为向下转型。向下转型要进行强制转换。
多态有个非常重要的特点:就是在程序编译的时候使用是引用变量的特征,程序在运行的时候,使用的是实际对象的特征。
实例:
//定义一个类,将这个类作为Son的父类。
class Father{
//
int age;
//定义父类中的方法
public void eat(){
System.out.println("年龄大了,吃的少");
}
}
//定义一个类,将该类做为Father的子类
class Son extend Father{
int age;
//复写父类中的方法
public void eat(){
System.out.println("年龄小,吃得多");
}
}
//编写测试类
public class Test{
public static void main(String[] args){
//使用向上转型;
Father fa = new Son();
//通过fa应用变量调用eat()方法
fa.eat();//猜猜控制台打印的是什么?程序在编译时使用的是引用变量fa的特征,绑定的是Father中的eat()方法。到了程序运行的时变成了使用对象Son的特性,绑定的是Son中的eat()方法。所以程序运行的结果是"年龄小,吃得多"。
总结:多态的前提,要有继承关系,子类中复写父类的方法。这样才会有多态。
}
} |