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


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

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

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出來的時候, 才可以在將來被強制轉換為子類對象.

子類繼承父類的所有(包括屬性以及方法), 也就是說子類包含的內容應該是比父類要大的. 如果正常環境下, 把一個父類轉換成子類一定會損失精度.  但是如果父類對象本身就是用

子類去new出來的, 就類似於一個本來就是兒子角色的人, 去裝了一會兒父親, 這個角色是可以在未來轉換回去的, 但是一個父親, 永遠不可能去裝兒子的.


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM