新建父類引用到子類物件實現子類轉換為父類型別後,子類物件所擁有的父類沒有的屬性是否會消失?

  • 作者:由 匿名使用者 發表于 文化
  • 2023-01-26

新建父類引用到子類物件實現子類轉換為父類型別後,子類物件所擁有的父類沒有的屬性是否會消失?じ☆veve2017.04.10 回答

這個不會消失,但是父類看不到子類的屬性,也就是說呼叫不到的。

但是如果你把 個由子類轉換來的父類引用交給一個子類時,屬性就可以呼叫了。

如:

// Child有一個父類沒有的屬性x

Child c = new Child();

Parent p = c;

System。out。println(p。x); //這裡在編譯時會報錯,因為對Parent類來說,是沒有x這個屬性的。

Child cc = p;

System。out。println(cc。x); // 轉換回來後,可以正常呼叫並且得到值。

關於地址的問題。因為賦值操作都是把地址交給不同的變數,只是變數的指向變化了,而地址是沒有發生改變的。

新建父類引用到子類物件實現子類轉換為父類型別後,子類物件所擁有的父類沒有的屬性是否會消失?毛毛羽2017.04.05 回答

父類物件強轉為子類物件會丟失精度。你可以這樣father father = new child();這就是父類引用指向子類物件

你可以理解為child是father,但是不能理解為father是child。

第二種情況,因為是object的。object只是定義了最基本的方法、屬性。 所以強轉的時候,你可以認為是user是object,object是user都行。因為所有類都是object的子類,強轉後,不存在丟失精度。

Top