Java中父類強制轉換爲子類的可能

以前徒弟問了一個問題, 在Java中, 父類對象到底能不能轉換成對應的子類對象?this

到底能不能, 今天就來講說這個問題, 先看下面一段代碼:spa

package cn.com.hanbinit.test;
/**
 * 檢驗父類是否能夠強轉爲子類
 * @author icer
 *
 */
public class ConvertPro extends Father {

    public static void main(String[] args) {
        Father father = new Father();
        Father father1 = new ConvertPro();
        ConvertPro son = new ConvertPro();
        // ConvertPro son1 = (ConvertPro) new Father();
        // son = (ConvertPro)father;
        son = (ConvertPro) father1;
    }
}

/**
 * 父類
 * 
 * @author icer
 * 
 */
class Father {
    private String name;

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }
}

上面代碼註釋掉的兩行是會運行錯誤的. 根據代碼顯示,  只有咱們的父類對象自己就是用子類new出來的時候, 才能夠在未來被強制轉換爲子類對象.code

子類繼承父類的全部(包括屬性以及方法), 也就是說子類包含的內容應該是比父類要大的. 若是正常環境下, 把一個父類轉換成子類必定會損失精度.  可是若是父類對象自己就是用對象

子類去new出來的, 就相似於一個原本就是兒子角色的人, 去裝了一下子父親, 這個角色是能夠在將來轉換回去的, 可是一個父親, 永遠不可能去裝兒子的.blog

相關文章
相關標籤/搜索