1. 程式人生 > >java 關鍵字final static

java 關鍵字final static

tex 需要 main方法 person 類重寫 super 類名 lint static

final的概念

繼承的出現提高了代碼的復用性,

final的特點

l final修飾類不可以被繼承,但是可以繼承其他類。

class Yy {}

finalclass Fu extends Yy{} //可以繼承Yy

class Zi extendsFu{} //不能繼承Fu

l final修飾的方法不可以被子類重寫,但父類中沒有被final修飾方法,子類重寫後可以加final。

class Fu {

// final修飾的方法,不可以被覆蓋,但可以繼承使用

publicfinalvoid method1(){}

publicvoidmethod2(){}

}

class Zi extends Fu {

//重寫method2方法

publicfinalvoid method2(){}

}

final修飾的變量稱為常量,這些變量只能賦值一次。而且終身不變

finalinti = 20;

i = 30; //賦值報錯,final修飾的變量只能賦值一次

l 引用類型的變量值為對象地址值,地址值不能更改,但是地址內的對象屬性值可以修改。

final Person p = new Person();

Person p2 = new Person();

p = p2; //final修飾的變量p,所記錄的地址值不能改變

p.name = "小明";//可以更改p對象中name屬性值

l 修飾成員變量,需要在創建對象前賦值,否則報錯。(當沒有顯式賦值時,多個構造方法的均需要為其賦值。)

class Demo {

//直接賦值

finalintm = 100;

//final修飾的成員變量,需要在創建對象前賦值,否則報錯。

finalintn;

public Demo(){

//可以在創建對象時所調用的構造方法中,為變量n賦值

n = 2016;

}

}

static關鍵字

static它是靜態修飾符,一般用來修飾類中的成員。

static特點

l 被static修飾的成員變量屬於類,不屬於這個類的某個對象。(也就是說,多個對象在訪問或修改static修飾的成員變量時,其中一個對象將static成員變量值進行了修改,其他對象中的static成員變量值跟著改變,即多個對象共享同一個static成員變量)

l 被static修飾的成員可以並且建議通過類名直接訪問。

訪問靜態成員的格式:

類名.靜態成員變量名

類名.靜態成員方法名(參數)

對象名.靜態成員變量名 ------不建議使用該方式,會出現警告

對象名.靜態成員方法名(參數) ------不建議使用該方式,會出現警告

static註意事項

l 靜態內容是優先於對象存在,只能訪問靜態,不能使用this/super。靜態修飾的內容存於靜態區。

l 同一個類中,靜態成員只能訪問靜態成員

l main方法為靜態方法僅僅為程序執行入口,它不屬於任何一個對象,可以定義在任意類中。

l 多態調用方法中,編譯看=左邊,父類有,編譯成功,父類沒有,編譯失敗

運行,靜態方法,運行父類中的靜態方法,

運行,非靜態方法,運行子類的重寫方法

成員變量,編譯運行全是父類

定義靜態常量

public static final修飾的變量來完成定義。此時變量名用全部大寫,多個單詞使用下劃線連接。

定義格式:

public static final 數據類型變量名 = 值;

註意:因為接口不能new對象,所以成員變量必須是public static final 的格式:

當我們想使用類的靜態成員時,不需要創建對象,直接使用類名來訪問即可。

System.out.println(School.SCHOOL_NAME);

School.method(); // 調用一個靜態方法

java 關鍵字final static