靜態變量,公共變量。
靜態不可變,動態可變。
非靜態有對象。
在Java中,“動態方法”通常指實例方法(非靜態方法),它和靜態方法的核心區別可以從以下維度區分:
對比維度 靜態方法(static修飾) 實例方法(動態方法,無static修飾)
歸屬主體 屬於類本身,是類的公共資源 屬於對象(類的實例),是每個對象的專屬行為
調用方式 直接通過“類名.方法名”調用(無需創建對象) 例: StudentUtil.getMaxAgeStudent(list) 必須先創建對象,通過“對象.方法名”調用 例: stu1.getAge() (先new Student得到stu1)
訪問成員的權限 只能直接訪問靜態成員(靜態變量、靜態方法),不能直接訪問實例成員(因為實例成員屬於對象,調用靜態方法時可能還沒有對象) 可以直接訪問靜態成員 + 實例成員(調用時對象已創建,能關聯到對象的實例數據)
內存加載時機 類加載時就會加載到內存(方法區),全局共享 對象被創建時,才會與對象關聯(方法本身存在於方法區,但調用時綁定具體對象)
典型使用場景 工具類方法(如 StudentUtil 的獲取最大年齡方法)、通用工具邏輯(無需依賴對象數據) 對象的專屬行為(如 Student 的 getAge() 方法,需依賴具體學生對象的年齡數據)
結合之前的代碼例子:
- StudentUtil.getMaxAgeStudent() 是靜態方法:工具類無需創建對象,直接通過類名調用,邏輯不依賴某個具體對象的數據;
- Student.getAge() 是實例方法:每個學生對象的年齡是“專屬數據”,必須通過具體的學生對象(如 stu1 )調用,才能獲取該對象對應的年齡。
靜態直接用類訪問,動態是對象。
繼承
相同的內容可以寫進父類,共同的特質。
子類是父類中的一種,也不能看到相同的就寫進父類
繼承的特點。
私有類只能在本類中訪問