一、有什麼作用
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 構造方法,建立乙個新的...