Java物件導向筆記 六 static關鍵字

2021-07-30 13:19:26 字數 1347 閱讀 7554

一、有什麼作用

static表示靜態的,存在於靜態域中,用於修飾成員變數和成員函式,

當成員變數被static修飾後,可以用類名呼叫(類名.靜態成員)。

二、特點

①隨著類的載入而載入,隨著類的消失而消失(生命週期最長)

②被所有物件所共享

③優先於物件存在

④可以直接被類名所呼叫

三、和例項變數(成員變數)的區別

①存在位置:類變數隨著類的載入而存在於方法區;例項變數隨著物件的建立而存在於堆記憶體中。

②生命週期:類變數生命週期最長,隨著類的消失而消失;例項變數生命週期隨著物件的消失而消失。

三、注意事項

①靜態方法只能訪問靜態成員,非靜態方法既可以訪問靜態,又可以訪問非靜態。

②靜態方法中不可以定義this,super關鍵字(因為靜態優先於物件存在)

四、靜態**塊

①格式static

②注意:隨著類的載入而執行,只執行一次,並優先於主函式,用於給類初始化。

五、案例

class staticcodedemo 

public static void main(string args)

static }

class staticcode

public staticcode()

system.out.println("這是staticcode類中的建構函式");

}}

這是staticcodedemo類中的靜態**塊

這是staticcodedemo類中位於主函式下的靜態**塊

這是staticcode類中的靜態**塊

這是staticcode類中的構造**塊

這是staticcode類中的建構函式

這是staticcode類中的構造**塊

這是staticcode類中的建構函式

over

解釋:①當程式執行時,先將staticcodedemo類載入到記憶體中,同時會將靜態**塊載入到靜態域中給staticcodedemo類初始化,這時就有了第一二行的結果。

②然後在去執行主函式,當new staticcode()時會將staticcode類載入到記憶體中,並執行裡面的靜態**塊給staticcode類初始化

這時就有了第三行的結果。

③執行完靜態的後會去執行建構函式,執行建構函式時先執行構造**塊在執行其他的內容,這就有了第四五行的結果。

④當主函式中再次new staticcode()時,staticcode類中的靜態**塊不會在載入,而只會呼叫建構函式給物件初始化,就有了第六七行的結果。

⑤主函式中執行**輸出over,程式結束。

Java物件導向(六)

抽象類 1.1什麼是抽象類,作用以及用法 抽象類自身不能建立物件,但是它的子類可以建立物件。抽象它的子鍵字是abstract 在父類中定義的抽象方法,在子類中必須實現 即方法重寫 抽象方法指只有功能宣告,抽象方法沒有方法體。抽象方法必須定義在抽象類中。1.2定義格式 抽象方法定義的格式 public...

Java物件導向 六 多型

多型的最終體現 父類引用變數可以指向子類物件 多型的前提 必須有子父類關係或者類實現介面的關係,否則無法完成多型 在使用多型後的父類引用變數呼叫方法時,會呼叫子類重寫後的方法 多型的定義格式 就是父類引用變數指向子類物件 父類引用變數 變數名 new 子類型別 變數名.方法名 class fu cl...

java物件導向學習筆記

1.類和物件 類可以看成是一類物件的模板,物件可以看成是該類的乙個具體例項.2.類 物件 之間的關係 聚合,繼承,實現,多型.3.記憶體區分 類是靜態概念,區 物件是new出來的,位於堆記憶體 4.構造方法 函式 1 與類同名且沒有返回值 2 用來初始化物件的函式 3 new 構造方法,建立乙個新的...