java記憶體管理與繼承
阿新 • • 發佈:2019-01-03
本文為轉載文章,原文地址:http://blog.csdn.net/sdkdeveloper/article/details/77151593
物件記憶體管理:
1.編譯好的java程式(.class)需要執行在JVM中。JVM記憶體分為“堆”,“棧”,“方法區”。
2.堆中存放所有new關鍵字建立的物件(包括成員變數)
3.成員變數的生命週期:建立物件時存放在堆中,物件被回收時一併消失。
4.記憶體洩漏是指不再實用的記憶體沒有被及時回收。
5.棧:用於儲存正在呼叫中方法的區域性變數
6.一個棧偵對應的是正在呼叫中的方法,存放 方法的引數,區域性變數
7.區域性變數必須賦初始值
8.方法區中專門存放類(包括該類中所有方法)的資訊,java程式執行時,
首先會通過類裝載器載入檔案的位元組碼(.class)資訊,只裝載一次
9.繼承:
父類:所有子類所共有的屬性和行為
(1)避免程式碼重複,利於複用,繼承具有傳遞性
(2)java規定,構造子類之前必須先去構造父類,子類的構造中若沒有呼叫
父類的構造,則預設super()呼叫父類無參構造。
重點:子類的構造方法中必須通過super關鍵字呼叫父類的構造方法,這樣可以
妥善的初始化繼承自父類的成員變數。如果子類的構造方法中沒有呼叫父類的構造
方法,java編譯器會自動加入對父類無參構造方法的呼叫(如果該父類沒有無參的
構造方法,會有編譯錯誤)Boo(){super();}
向上造型:父型別的引用指向子類的物件。
能點出什麼,看引用的型別(通過父類的引用,只能訪問父類所定義的成員)。
重寫方法被呼叫時,看物件的型別(當子類的重寫方法被呼叫時,無論是父類的引用還是子類的引用,呼叫的都是子類的重寫方法)
重寫遵循:兩同兩小一大
重寫看物件,過載看引用