1. 程式人生 > >java學習筆記之面向對象static,final關鍵字

java學習筆記之面向對象static,final關鍵字

一次 static 變量 div nbsp 子類 方法 pan 抽取

java學習筆記之面向對象static,final關鍵字

一.static關鍵字

1.概述:

  static靜態的,被static修飾的成員屬於類,不屬於單個對象,被所有對象所共享,存在靜態區中,靜態的成員優先於對象加載到內存中。

2.statc修飾成員的使用方式:(被static修飾的成員變量有默認值)

  

/*
1.可以通過對象直接使用,不推薦使用
2.通過類名調用靜態成員
    類名.靜態成員變量
    類名.靜態成員方法
*/

3.static的特點

 

/*
1.在同一個類中,靜態成員只能訪問靜態成員,非靜態成員可以訪問靜態成員跟非靜態成員。原因:靜態成員優先加載到內存中,而非靜態的成員只有在創建對象時才會加載到內存中。
2.main方法為靜態成員方法,僅僅作為程序的執行入口,不屬於某個類,可以定義到任意類中。
*/

4.靜態代碼塊:

  代碼塊:指被{}包裹起來的代碼區域

  

/*
1.局部代碼塊:
    定義在局部位置的(方法內)的代碼塊,主要作用是改變變量的作用域;
2.構造代碼塊:
    定義在成員位置(類中方法外)的代碼塊,構造代碼塊屬於每一個對象,每創建一次對象,就會執行一次。優先於構造方法執行;
    作用:《1》給成員變量賦值《2》將構造方法中的共性代碼抽取出來,提高代碼的復用性
3.靜態代碼塊:
    定義在成員位置的(類中方法外)的代碼塊,被static修飾。靜態代碼塊屬於類,不屬於對象,終身只執行一次,最先執行(靜態優先於非靜態,優先於對象);作用:《1》給靜態變量賦值《2》應用於項目的初始化
*/

5.static多態調用中,編譯跟運行;

  編譯:看父類,父類有編譯成功,父類沒有編譯失敗;

  運行:

    成員變量:都看父類

    成員方法:非靜態運行子類重寫

          靜態運行父類的靜態方法(和子類沒有關系,多態表現的是父類的形態);

  原因:靜態方法屬於類,不屬於對象,靜態方法更沒有重寫這一說

      對象的多態性,靜態和對象無關,父類的引用.靜態方法,調用的是父類的靜態方法

二.final關鍵字

1.理解:

  final最終的,不能更改的;

2.final特點:

/*
1.  final修飾類時:被final修飾的類不能被繼承,其他不變,可以繼承其他類,也叫太監類;
2.  修飾成員方法時:該成員方法是一個最終方法,不能被子類重寫
,可以被繼承使用; 3. 修飾變量時:被修飾的變量是一個常量,其中值不能發生改變,一次賦值終生不變,局部變量只有final一個修飾符; 4. 修飾成員變量時:是一個常量,其值只能賦值一次,必須在創建對象之前賦值,被修飾的成員變量必須顯示賦值:《1》定義的時候顯示賦值《2》使用構造代碼塊《3》使用構造方法
*/

三.四種權限修飾符

1.private:私有的,僅同類訪問

2.默認:就是不寫修飾符,相同包下訪問

3.protected:受保護的;相同包或者不同包下的子類訪問

4.public:公共的;同一個項目下

  

java學習筆記之面向對象static,final關鍵字