0
点赞
收藏
分享

微信扫一扫

【Java】 简单讲述一下上转型和下转型的概念

沪钢木子 2021-09-29 阅读 55
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也是有这种特性

举报

相关推荐

0 条评论