java關鍵字——this、super、final、static
阿新 • • 發佈:2018-12-15
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();
}
}