新建父類引用到子類物件實現子類轉換為父類型別後,子類物件所擁有的父類沒有的屬性是否會消失?
- 2023-01-26
這個不會消失,但是父類看不到子類的屬性,也就是說呼叫不到的。
但是如果你把 個由子類轉換來的父類引用交給一個子類時,屬性就可以呼叫了。
如:
// Child有一個父類沒有的屬性x
Child c = new Child();
Parent p = c;
System。out。println(p。x); //這裡在編譯時會報錯,因為對Parent類來說,是沒有x這個屬性的。
Child cc = p;
System。out。println(cc。x); // 轉換回來後,可以正常呼叫並且得到值。
關於地址的問題。因為賦值操作都是把地址交給不同的變數,只是變數的指向變化了,而地址是沒有發生改變的。
父類物件強轉為子類物件會丟失精度。你可以這樣father father = new child();這就是父類引用指向子類物件
你可以理解為child是father,但是不能理解為father是child。
第二種情況,因為是object的。object只是定義了最基本的方法、屬性。 所以強轉的時候,你可以認為是user是object,object是user都行。因為所有類都是object的子類,強轉後,不存在丟失精度。