1. 程式人生 > >java關鍵字——this、super、final、static

java關鍵字——this、super、final、static

this()和super()必須出現在構造的第一行,因此不可能同時出現。

並且this和super關鍵字不能出現在static修飾的方法中,static修飾的方法是屬於類的,該方法的呼叫者可能是一個類,而不是物件。所以this和super限定也就失去了意義。

1. this關鍵字

this關鍵字表示本類的物件/引用

所有的屬性變數不能重名,在同一區域的區域性變數不能重名,但屬性和區域性變數可以重名,在區域性變數的作用區域外,變數名代表屬性,在區域性變數的作用區域內,代表區域性變數,如果想使用屬性,需要this.呼叫

public void down(int y) {		//在方法中可以同過this關鍵字代表:呼叫該方法的那個物件的y值。
    this.y += y;				//而非形參裡的y
}

this和構造方法

在構造方法中,可以用this()呼叫本類的其它構造。this()必須放在構造的第一行。

public class Student{
    public Student(){
        this(“zhangfei”,25);
        ….;
    }
    public Student(String name,int age){
    }
}	

2. super關鍵字

super關鍵字通常表示父類的物件/引用 用於子類繼承父類中

使用super.的方式可以訪問父類的成員變數/成員方法。

使用super()的方式放在構造方法的第一行,表示呼叫父類的構造方法。

3. final關鍵字

final:本意為  ”最終的,不可更改的“,該關鍵字可以修飾類,成員方法,成員變數。

使用方法

1.使用final關鍵字修飾類表示該類是最終的,即該類不可再被繼承。

防止濫用繼承,如:String類,System類

2.使用final關鍵字修飾成員變量表示該變數是必須要賦值的,而且不能更改

通常用於描述固定數值,如:Thread類中的MAX_PRIORITY

3.使用final關鍵字修飾成員方法表示該方法不能被重寫,可以繼承

防止不經意間造成的方法重寫,如:SimpleDateFormat類中的format()方法。

4. static關鍵字

static是一個特殊的關鍵字,可以用於修飾方法,屬性等成員。

靜態成員與物件是否建立無關,未建立物件也可以使用,並且為所有物件共享。

static宣告的靜態成員不能直接訪問非靜態成員,非靜態成員可以訪問靜態成員和非靜態成員。

static修飾的成員表明它是屬於這個類共有的,而不屬於該類的某個物件因此它的層級為類層級,通常把static修飾的屬性和方法也稱為類屬性、類方法(靜態屬性、靜態方法)。

把不使用static修飾的屬性和方法也成為例項屬性、例項方法。【成員變數隸屬於物件層級】

public class TestStatic{
    private int cnt = 10;		 //隸屬於物件層級
    private static int snt = 20; //static修飾表示隸屬類層級,與物件是否建立無關,並被所有物件共享
    
    public void show(){
        System.out.println("cnt = " + cnt); //ok 10
        System.out.println("snt = " + snt); //ok 20
    }
    //自定義靜態成員方法,隸屬於類層級,隨著類的載入準備就緒,此時可能沒有建立物件也會進行列印
    public static void test(){
        //System.out.println("cnt = " + cnt); //error  
        System.out.println("snt = " + snt); //ok 20
    }

    public static void main(String[] args){
        TestStatic ts = new TestStatic();
        ts.show();        
    }    
}