第四十讲 向上转型和强制类型转换

发布时间:2023-01-19 03:40:25   来源:文档文库   
字号:

有时候需要把父类对象指向子类对象,有时候需要把父类对象转换成子类对象。例如我们可以说某一只狗是一只动物,还可以说这只动物是一条狗,但前提是我们要知道狗肯定是动物,而那只动物必须是一只狗。下面介绍如何把父类指向子类对象,如何把子类对喜爱那个强制转换成子类对象。
1、父类引用指向子类对象
正常情况下,我们会定义某个类的对象引用,然后使用new实例化一个对象,然后把这个引用指向该实例。例如:
Dogdog=newDog(;假设DogAnimal的子类,也可以写下面的代码:
Animalanimal=newDog(;Animalanimal定义了一个Animal对象引用,newDog(实例化了一只狗,然后animal指向了这只狗。这是允许的,就像我们指着一只狗,然后说它是动物,它确实是动物。
还可以写成下面的形式:
Animalanimal=dog;意思是把animal引用指向dog引用指向的实例。


这就是向上转型,不仅仅是父类可以指向子类的对象,只要是祖先类都可以指向子类的实例。典型情况,Object是所有类的祖先类,所以Object类型的对象引用可以指向任何对象。例如下面的代码:
Objecto=newDog(;把父类引用指向子类对象的好处是什么呢?自己可以思考一下,后面的多态性应用中详细介绍。
另外,类似的用法还有:
某个方法的定义如下:
publicvoidsetValue(Objecto{
this.value=o;
}这个方法的参数是Object类型,返回值类型是Object。因为参数类型是Object,所以在调用这个方法的时候我们可以给它传递任何类型的参数,包括上面的Dog对象,只要是它的子孙类就可以了。
再看下面的方法:
publicObjectgetValue({

本文来源:https://www.2haoxitong.net/k/doc/560bf73567ec102de2bd895d.html

《第四十讲 向上转型和强制类型转换.doc》
将本文的Word文档下载到电脑,方便收藏和打印
推荐度:
点击下载文档

文档为doc格式