天天看點

面向對象中的——static

一. static——把對象相關的變成類相關的,可以修飾屬性、方法、代碼塊。

1.static修飾屬性(類變量)

此屬性可以用 “ 類名.屬性名  ”進行通路,也就是說此屬性成為本類的類變量,為本類所共享。

static int a——類變量;與int a——成員變量;(有static修飾的屬性和沒有static修飾的屬性的差別)的差別:

①成員變量----記憶體配置設定時機:建立執行個體的時候;在記憶體中位置:堆中,彼此獨立;通路方式:隻能通過對象通路。如下:成員變量不能被“類名.變量名”通路,類變量可以

面向對象中的——static

②類變量---記憶體配置設定時機:類加載的時候,在記憶體中位置:方法區,所有執行個體共享;通路方式:可以通過對象通路,也可以通過類名直接通路(推薦).如下圖:

面向對象中的——static
面向對象中的——static

2.static修飾方法——類方法

①類方法:同一類中,靜态方法隻能通路靜态資源(方法和屬性),類與類之間可以通過對象通路,也可“類名.方法名”直接通路。靜态方法不能使用this和super。

②成員方法:同一個類中,成員方法可以通路類中的所有方法和屬性;類與類之間全部通過執行個體來通路。

面向對象中的——static

從上圖可以看出,

面向對象中的——static

從上圖可以看出對象執行個體化的順序:

父類static屬性--父類static語句塊--子類static屬性--子類static語句塊--父類語句塊--父類構造器--父類初始化屬性--子類初始化屬性--子類語句塊--子類構造器

靜态方法是否能夠重寫?

同名靜态方法調用哪個不是取決于對象的實際類型,而是看引用的類型,所有靜态方法不能被看做重寫。

面向對象中的——static

繼續閱讀