您的位置 首页 java

「Java」 上转型和下转型,到底是什么啊?

一、概念

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也是有这种特性

——————————————————————————————
你知道的越多,不知道的就越多。

如果本文章内容有问题,请直接评论或者私信我。如果觉得我写得还不错的话,点个赞也是对我的支持哦

未经允许,不得转载!

文章来源:智云一二三科技

文章标题:「Java」 上转型和下转型,到底是什么啊?

文章地址:https://www.zhihuclub.com/191287.shtml

关于作者: 智云科技

热门文章

网站地图