1、從語義上講,靜態成員對類有意義,類和所有例項共享。例項成員對例項有意義,每個例項都有專屬於自己的。如何理解?舉例來說,person類的age應該是例項成員,每個person例項都有自己的age,而maxage(年齡的最大極限,比如說200歲),應該是靜態成員,因為maxage對於人類(包括所有人)有意義,也就是說,所有人的年齡最大極限都是200歲。
2、從記憶體分配上看,成員分為欄位和方法(c#當中的屬性是一種特殊的方法,其本質上也是方法),對於靜態字段,在記憶體中只有乙份拷貝,類與所有例項共享。對於例項字段,每個例項都有乙個拷貝。而對於方法,不論是靜態方法還是例項方法,在記憶體中都只有乙個拷貝,區別只是通過類來訪問和通過例項來訪問。如何理解?欄位是儲存資料的,靜態字段儲存相同內容的資料,因此只需要一塊記憶體。而例項字段儲存不同內容的資料,因此每個例項都需要一塊記憶體。而方法是資料的加工器,提供乙個入口,所有例項的加工器都是一樣的,因此不論是靜態方法還是例項方法,在記憶體中只需要一快記憶體。
3、由此引發出,類的例項化執行順序。因為靜態成員是屬於類的,即使沒有建立例項,靜態成員已經存在,並被分配記憶體了。因此類的例項化執行順序是先靜態成員後例項成員。在考慮繼承關係,子類什麼時候需要知道父類的資訊,在例項化之前的時候。因此執行順序是:子類靜態成員-->【父類靜態成員-->父類例項成員】-->子類例項成員。
靜態成員與例項成員
靜態成員與例項成員 成員 屬性和方法。例項 由建構函式建立出來的物件。靜態成員 和建構函式相關的屬性和方法。例項成員 由建構函式建立出來的物件的屬性和方法。靜態成員與建構函式有關,例項成員與例項有關。靜態成員和例項成員一般情況下是不能直接相互訪問的,即 例項 物件 是無法直接訪問靜態成員的 反之也是...
靜態成員與例項成員
1 類的成員分為靜態成員和例項成員。為什麼設計出靜態成員和例項成員?靜態成員對類以及類的所有例項有意義,例項成員對每個例項有意義。考慮,person類,有個age欄位和maxage欄位。每個person例項都有自己的age,但所有的person例項都有相同的maxage 最大年齡極限 因此,maxa...
例項成員和靜態成員
什麼是成員 建構函式中的屬性或方法稱為成員 建構函式中的成員分類 a 例項成員 在建構函式內部通過this關鍵字設定的屬性或方法 function fn uname b 例項成員如何訪問 通過例項物件點的方法訪問 通過建構函式建立的物件叫例項物件 let zs new fn 張三 console.l...