關於引用型別轉化的一些東西

zw1996發表於2016-12-07

java中的引用其實就是我們看物件的角度而言;
例如,在繼承中;
new出一個子類物件,站在子類的角度看,當然全部可以看到,
但是站在父類的角度看,則只能看到父類的那部分;這個可以看記憶體圖了;
但是在記憶體分析中,
引用就是存放在棧中的一個變數,存放這它所指向物件的記憶體;
這裡寫圖片描述

進入主題吧;
在繼承時的型別指向;
先記住引用指向,只能有兩種;
1;指向本身物件;
2;子類物件;

還記得上這個課的時候我還好大膽的質疑了這個,我知道子類引用指向父類物件是錯的,執行的時候會報錯,但是我還是提出了質疑,然後好尷尬的與老師對講了幾分鐘,在最後面還是老師提醒到了;
先說一下堅持我否認這個真理的理由吧?
先看一幅繼承的堆記憶體圖吧?
這裡寫圖片描述
在堆記憶體中,子類是包含父類的,因此我覺得子類引用指向父類物件是可行的,因為子類是包含父類的,是否意味著子類的引用可以指向父類對像呢?因為子類引用是可以看到父類的成員的。
因此記憶體圖的解釋使我始終認為子類引用是可以指向父類物件的,
知道與;老師爭辯時,他說道java是物件導向的,是與現實社會掛鉤的,那麼就意味著這樣是不能的,看圖
這裡寫圖片描述
但是要注意只要存在繼承關係,引用亂指都是可以通過編譯的,但是執行時就會出現錯誤;
這裡寫圖片描述

相關文章