面向對象02

1.內存管理:由JVM來管理

   1)堆:

       1.1)用於存儲所有new出來的對象(包括成員變量)

       1.2)成員變量的生命週期:

               創建對象時存在堆中,對象被GC回收時一併消失

       1.3)垃圾回收器(GC)不定時到堆中查看,看到垃圾

           自動回收:沒有任何引用所指向的對象。回收

              過程是透明的,並不是一看到垃圾就馬上回收,

          若想讓它快一些回收,可以調用System.gc()

       1.4)內存泄漏:不再使用的對象沒有被及時的回收,

               建議:當對象不再使用時應及時將引用設置爲null

   2)棧:

        2.1)用於存儲正在調用中方法的所有局部變量

        2.2)調用方法時在棧中爲該方法分配一塊對應的棧幀,棧幀中包含所有的局部變量(包括參數),方法調用結束時,對應的棧幀消失,局部變量一併消失。

        2.3)局部變量的生命週期:

       調用方法時存在棧中,方法調用結束時與棧幀一併消失

   3)方法區:靜態方法區 存放靜態成員 靜態變量 靜態函數

       非靜態方法區 存放構造函數 成員

   3.1)方法用於存放類的信息

     -方法區用於存放類的信息,java運行時,首先會通過加載器載入類文件的字節碼信息,經過解析後將其裝入方法區,類的各種信息,包括方法都在方法區中存儲。

   3.2)方法只有一份,通過this來區分具體是哪個引用

     -當類的信息被加載到方法區時,除了類的類型信息以外,同時類內的方法也定義在方法區中。

     -類在實例化對象時,多個對象會擁有各在在堆中的空間,但所有的實例對象是共用方法區的一份方法定義的。

2.繼承:

   1)目的:避免代碼的重複,有利於代碼的複用

   2)通過extends實現繼承

   3)父類:所有子類所共有的屬性和行爲

        子類:子類所特有的屬性和行爲

   4)子類繼承父類後,子類具有:

        子類+父類

   5)一個父類可以有多個子類

        一個子類只能有一個父類----單一繼承

   6)繼承具有傳遞性

   7)java規定:構造子類之前必須先構造父類,子類構造中若沒有調用父類的構造方法,則默認super()來調用父類的無參構造,若自己調了,則不再默認提供

Super()調用父類構造,必須位於子類構造方法的第一行。

3.super:指代當前對象的父類對象

   用法:

      super.成員變量名-------訪問父類的成員變量

      super.方法名()-------------調用父類的方法

      super()------------------調用父類的構造方法

4.向上造型:

    1)父類型的引用指向子類的對象 Animal animal = new dog();

    2)能點出來什麼,看引用的類型

5.方法的重寫(Override):

    1)發生在父子類中,方法名,參數列表與父類相同,方法體不同。

    2)重寫方法被調用時,看對象的類型

    3) 當子類對象的重寫方法被調用時,(無論是通過子類的引用還是父類的引用),運行的是子類的重寫後的方法

    4)子類在重寫父類的方法時,可以通過super關鍵字調用父類的版本。

6.重寫與重載的區別:

    1)重寫:父子類中,方法名相同,參數列表相同。

         遵循"運行期"綁定,根據引用指向對象的類型調用方法。

    2)重載:一個類中,方法名相同,參數列表不同,方法體一般也不同。

         遵循"編譯期"綁定,根據引用的類型調用方法。

7.訪問控制修飾符:

    1)public:公開的,任何類

   2)private:私有的,本類

   3)protected:受保護的,本類、子類、同包類

   4)默認的:什麼也不寫,本類、同包類

    類的訪問修飾:public和默認的

    類成員的訪問修飾:如上4種都可

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章