[英]How memory allocates to superclass and subclass members when we create object of subclass using superclass reference variable
[英]How subclass reference-variable can point to superclass object
子類引用變量不能引用超類:
Child c1 = new Parent(); // Error Incompatible types
所以我們告訴編譯器我知道對象的類型:
Parent p1 = new Child();
Child c1 = (Child) p1;
我的問題是子類引用變量如何指向超類對象而不會在運行時出現錯誤,並且如果您使用強制轉換它會更改該類型的狀態,例如:
int num = (int)6.6; // Result = 6
當 p1 對象被轉換為 Child-class 時,一定會發生一些事情。
您將引用或對象與引用變量混淆,兩者之間的區別是構成面向對象編程原則基礎的一個關鍵概念。
這里:
Parent p1 = new Child();
Child c1 = (Child) p1;
p1
不是超類對象。 相反,它是一個超類變量,引用您代碼中的子對象。 所以在第二行,你的 Child變量c1
被分配了一個 Child 對象。 請注意,即使p1
持有 super 的對象,編譯器也會允許此代碼,但是當代碼運行時 JVM 會拋出類轉換異常。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.