本章内容
向上转型
向下转型
向上转型
定义:
-
父类引用指向子类对象,这个过程称之为向上转型
-
属于自动转型类型
向下转型
特点:
-
向上转型后的父类引用变量只能调用它的编译类型的方法,不能调用它运行时类型的方法。这个时候需要强制类型转换,称之为向下转型
对象的转型:
public class TestPolym {
public static void main(String[] args) {
//创建Animal对象
Animal a = new Animal();
animalCry(a );
}
//为了方便调用写一个方法
static void animalCry(Animal a){
a.shout();
/*
a的类型是Animal
Dog是子类对象,子类对象给了父类引用
父类的类型指向了子类的对象,这时候就发生了多态
传的对象不一样,所以调用的shout方法也不一样,根据实参确定
存在目的为了少些重载
下面加子类可以方便调用
*/
Dog d = new Dog(); //把Dog d 改为Animal d没有问题,到调用方法的时候还是运行Dog的方法
/*
在这个为止编译器认为这个类型是Animal不是Dog
所以只能用Animal类下的方法而不能用Dog下的方法
*/
// animalCry(d);
animalCry(new Cat());
Dog d2 = (Dog)d;
/*
编译器认为这个d2经过强制类型转换转成了Dog
所以可以用Dog类下的方法
*/
}
}