首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> Java 程式設計 >> Java 綜合教學

Java 類定義關鍵字詳解:static、final、abstract、訪問修飾符

     編輯:Java 綜合教學

static — 靜態成員

1. 修飾屬性(類變量)

  • 屬於類,不屬於實例;類名.屬性名 訪問。
  • 類載入時初始化(僅一次),實例變量在 new 時初始化。

2. 修飾方法(靜態方法)

  • 類名.方法名() 調用;無 this,不可直接訪問非靜態成員。
  • 父類靜態方法只能被子類靜態方法隱藏(非覆寫),無多態。

3. 修飾初始化塊

  • static { ... }:類載入時執行一次,用於靜態變量複雜初始化。
  • 非靜態 { ... }:每次 new 實例前執行(構造子前)。

類載入觸發時機

  1. new 實例
  2. 調用靜態方法/訪問靜態屬性
  3. 載入子類(先載入父類)
  4. 延遲載入:只有真正用到才載入

final — 最終/不可變

1. 修飾變量 → 常量

  • 命名全大寫;賦值後不可改;無預設值,須顯式初始化。
  • 常與 static 合用:static final int MAX = 100;

2. 修飾方法 → 禁止覆寫

  • 保證實現穩定,編譯器可內聯優化。

3. 修飾類 → 禁止繼承

  • final class 所有方法隱式 final。

注意

  • 不可修飾構造方法。
  • 父類 final 常量,子類使用不觸發父類載入。
  • 不變模式:final 修飾屬性 + final 修飾類(強不變)或僅屬性(弱不變)。

abstract — 抽象/規範

1. 修飾類 → 抽象類

  • 不可實例化;可作為引用類型(編譯期類型)。
  • 像「半成品」,需子類繼承並實現抽象方法。

2. 修飾方法 → 抽象方法

  • 只有聲明,無實現(以 ; 結尾)。
  • 強制子類實現(除非子類也是抽象類)。

規則

  • 有抽象方法 ⇒ 必須是抽象類;抽象類可無抽象方法。
  • abstract 必須置於類名前。
  • 抽象類可有構造子(供子類 super() 調用)。

互斥組合

final、private、static 不能與 abstract 同修飾方法——因為它們阻礙「子類實現並多態調用」。

四大訪問修飾符

修飾符可見範圍適用對象
public所有類類、成員、構造子
protected同包 + 異包子類成員、構造子
default (無)同包類、成員、構造子
private僅當前類成員、構造子

封裝原則:屬性 private,對外提供 public getter/setter;需子類擴展的方法用 protected。

精通關鍵字語義,是寫出健壯、可維護 Java 代碼的基石。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved