一、概念
1.上转型
假如现在有两个类,一个是父类,一个是继承了父类的子类
把 子类的对象交给父类去引用 ,就是上转型
特点
上转型得来的父类对象只能使用父类中存在的方法,如果子类重写了这个方法,那就是调用子类的方法
2.下转型
假如父类的对象是子类上转型而来的,将这个 父类对象强转成子类对象 ,就是下转型
特点
就是相当于重新new了一个子类对象,不是上转型得来的对象不能下转型
二、代码演示
代码
package test1;
/**
* @author xxj
* 上转型下转型测试
*/public class TransformationTest {
public static void main(String[] args) {
//上转型,用父类对象去装子类对象实例
Animal aCat=new Cat();
aCat.call();
aCat.crawl();
//下转型,将上转型转换过来的父类转成子类
Cat cat1=(Cat)aCat;
cat1. scratch ();
//不是上转型得来的父类不能下转型
Animal animal=new Animal();
((Cat) animal).scratch();
}
public static class Cat extends Animal{
public void scratch(){
System.out.println("cat挠");
}
@ Override
public void crawl() {
System.out.println("cat爬");
}
}
public static class Animal{
public void crawl(){
System.out.println("animal爬");
}
public void call(){
System.out.println("animal叫");
}
}
}
结果
animal叫
cat爬
cat挠
Exception in thread "main" java.lang.ClassCastException: test1.TransformationTest$Animal cannot be cast to test1.TransformationTest$Cat
at test1.TransformationTest.main(TransformationTest.java:18)
三、总结
感觉上转型和下转型没有太大的用处,可能是我个人水平不高,感觉不到这有什么用。
不仅仅是class,还有 interface也是有这种特性 。
——————————————————————————————
你知道的越多,不知道的就越多。如果本文章内容有问题,请直接评论或者私信我。如果觉得我写得还不错的话,点个赞也是对我的支持哦
未经允许,不得转载!