每天开心一点

Java中的向上转型和向下转型

2019-11-18 13:32:00    六月    565    来源: https://www.jianshu.com/p/5726da310225

向上转型:子类对象转为父类,父类可以是接口。

公式:Father f = new Son();

  Father是父类或接口,son是子类。  

目的是更加简洁,如果方法被重写,则使用子类的重写的方法。没有子类属性。如果想要有子类属性,需要使用get方法;

向下转型  是强制转型:父类对象转为子类。

公式:Son son =(Son)father;   目的是使用子类独有的方法;

   其中father前面的(Son)必须添加,进行强制转换。


java中的向上转型有什么妙用?

可以应用java中的上转型对象,实现java编程的多态。

上转型对象不是父类创建的对象,而是子类对象的“简化”状态,它不关心子类新增的功能,只关心子类继承和重写的功能。
当一个类有很多子类时,并且这些子类都重写了父类中的某个方法。
当使用上转型对象在调用这个方法时就可能具有多种形态。因为不同的子类在重写父类的方法时可能产生不同的行为。也就是说,不同对象的上转型对象调用同一方法可能产生不同的行为。
例如下面的程序你测试一下就可以理解这样的用法。
class Animal{
void cry(){}
}
class Dog extends Animal{
void cry(){
System.out.println("Wang!Wang!......");
}
}
class Cat extends Animal{
void cry(){
System.out.println("miao~~miao~~...");
}
}
public class Example5_9{
public static void main(String args[]){
Animal animal;
animal=new Dog(); //animal是Dog对象的上转型对象
animal.cry();
animal=new Cat(); //animal是Cat对象的上转型对象
animal.cry();
}
}

参考: https://zhidao.baidu.com/question/72034787.html

     https://blog.csdn.net/guchenjun789/article/details/81055317

     https://www.cnblogs.com/cainame/p/10324290.html

     https://blog.csdn.net/yuanren201/article/details/88872744