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也是有這種特性

——————————————————————————————
如果本文章內容有問題,請直接評論或者私信我。
未經允許,不得轉載!

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