Java基礎 -- static、final、內部類

一、static 關鍵字

1. static 修飾成員變量

  • 用 static 修飾的成員變量不屬於對象的數據結構。
  • static 變量是屬於類的變量,通常可以通過類名來引用 static 成員。
  • static 成員變量和類的信息一起存儲在方法區,而不是在堆中,一個類的 static 成員變量只有“一份”,無論該類創建了多少個對象。

2. static 修飾方法

  • 通常非 static 修飾的方法都會涉及到對具體對象的操作,這些方法在調用時,需要隱式的傳遞對象的引用(this)。
    在這裏插入圖片描述
  • static 修飾的方法則不需要針對某些對象進行操作,其運行結果僅僅與輸入的參數有關,調用時直接用類名引用。
    在這裏插入圖片描述
  • 由於static在調用時沒有具體的對象,因此在 static 方法中不能對非 static 成員(對象成員)進行訪問。static方法的作用在於提供一些“工具方法”和“工廠方法”等。

3. static 塊

  • 屬於類的代碼塊,在類加載期間執行的代碼塊,只執行一次,可以用作在軟件中加載靜態資源。
    在這裏插入圖片描述

二、final 關鍵字

1. final 修飾變量

  • final 關鍵字修飾成員變量,意爲不可改變,有兩種方式初始化:聲明的同時初始化、構造函數中初始化。
  • final 關鍵字也可以修飾局部變量,使用之前初始化即可。

2. final 修飾方法

  • final 關鍵字修飾的方法不可以被重寫,意義在於:防止子類在定義新方法時造成的“不經意”重寫。

3. final修飾類

  • final 關鍵字修飾的類不可以被繼承,意義在於:可以保護類不被繼承修改,可以控制濫用繼承對系統造成的危害。
  • JDK中的一些基礎類庫被 final 修飾,例如:String、Math、Integer、Double等等。

4. static final 常量

  • static final 修飾的成員變量成爲常量,必須聲明同時初始化,不可被改變。
  • static final 常量會在編譯期被替換,例如:
    在這裏插入圖片描述

三、內部類

1. 成員內部類

  • 一個類可以定義在另外一個類的內部,定義在類內部的類稱之爲 Inner ,其所在的類稱之爲 Outer ;
  • Inner 定義在 Outer 的內部,通常只服務於 Outer ,對外部不具備可見性,Inner 可以直接調用 Outer 的成員及方法(包括私有的)。
    在這裏插入圖片描述
  • 一般情況下,Inner對象會在Outer對象中創建(構造方法或其他方法);Inner對象中會有一個隱式的引用指向創建它的Outer類對象。
    在這裏插入圖片描述

2. 匿名內部類

  • 如果在一段程序中需要創建一個類的對象(通常這個類需要實現某個接口或者繼承某個類),而且這個對象創建後,這個類的價值也就不存在了,這個類可以不必命名,稱之爲匿名內部類。
    在這裏插入圖片描述
  • 定義匿名內部類:
    在這裏插入圖片描述
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章