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

——————————————————————————————
如果本文章内容有问题,请直接评论或者私信我。
未经允许,不得转载!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章