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

Java 實例變量與類變量、實例方法與類方法訪問權限完整對比

     編輯:Java 綜合教學

核心定義

分類關鍵字歸屬生命週期調用方式
實例變量無 static對象隨對象創建/銷毀對象.變量
類變量(靜態變量)static類類加載至卸載類名.變量 / 對象.變量
實例方法無 static對象隨對象對象.方法()
類方法(靜態方法)static類類加載至卸載類名.方法() / 對象.方法()

代碼演示:靜態變量共享

class TiXing {
    float up, height;
    static float down;  // 類變量
    TiXing(float x, float y, float z) {
        up = x; height = y; down = z;  // 每次 new 都會覆蓋 down!
    }
}
public class Test {
    public static void main(String[] args) {
        TiXing one = new TiXing(1, 2, 3);
        System.out.println("one.down = " + one.down);  // 3
        TiXing two = new TiXing(4, 5, 6);
        System.out.println("one.down = " + one.down);  // 6 ← 被覆蓋!
        System.out.println("two.down = " + two.down);  // 6
        System.out.println("TiXing.down = " + TiXing.down);  // 6
    }
}

關鍵點:構造器對 static 變量賦值會影響所有實例,通常應在靜態代碼塊或聲明處初始化。

訪問權限矩陣

方法類型可訪問實例變量可訪問類變量可用 this/super
實例方法✅✅✅
類方法❌✅❌

代碼驗證

class TiXing {
    private float up, height;
    private static float down;
    TiXing(float x, float y, float z) { up=x; height=y; down=z; }
    
    // 實例方法:可訪問所有
    public void display() {
        System.out.println("up=" + up + " height=" + height + " down=" + down);
    }
    
    // 類方法:不可訪問實例變量
    public static void change(float n) {
        down = n;  // ✅
        // System.out.println(height);  // ❌ 編譯錯誤
    }
}

最佳實踐

  • 工具類、常量、單例模式用 static
  • 實體狀態用實例變量
  • 靜態方法中絕不直接訪問實例成員
  • 靜態變量初始化優先用靜態代碼塊 static { ... }
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved