一、this關鍵字
給出執行結果:/**
* 關鍵字『this'的相關解析
*@author johnyhe
* */
public
class
this_useage
}class animal
public
void
jump()
/*** 在play()方法中,this具體指的物件取決於呼叫play()方法的例項,
* 但是this的型別是可以確定的——即當前類的例項
*/public
void
play()
}class dog extends animal
public
dog(string kind)
public string getkind()
//返回物件的值
public dog getdog()
@override
public
void
jump()
}
說明:根據執行結果來看,當animal,dog例項變數呼叫例項方法jump()時,二者的行為表現取決於例項變數指向的物件中的jump()方法體行為,這就是執行時多型。敲黑板!!!當animal呼叫play()方法時表現為父類,這個不解釋;當dog呼叫父類方法play()時,play()中的this.jump()表現為子類dog的jump()方法行為。此時,this具體指向的物件才確定出來。即this與例項變數dog指向的物件相同
二、static關鍵字
1.static用於修飾成員變數和方法,這些成員變數及方法屬於類而不屬於例項。
2.static可以修飾**塊,即靜態**塊。靜態**塊也屬於類本身。
3.以上的成員變數、方法和**塊在編譯期間就已經存在了。
4.由於static修飾的成員變數、方法及**塊屬於類,因此其中不能使用當前類本身的內部例項this引用呼叫任何例項變數和例項方法,因為例項變數及方法都是在例項被建立之後才存在的。因此,如果要呼叫例項方法及變數則需要在其中建立例項然後呼叫。
5.關於static修飾的成員變數,方法的呼叫 :既可以用例項呼叫,也可以用類名呼叫。但是既然屬於類,用類的例項呼叫顯得有點矛盾,因此強烈建議用類名呼叫。
執行結果:/**
* 關鍵字static的解析
* @author johnyhe
* */
public
class static_useage
static
public
static
void
main(string args)
public
static
void
method_static()
public
void
method_instance()
static
}
說明:根據執行結果來看,靜態**塊和靜態變數的執行要先於構造器。
JAVA之static與非static區別
關於static和非static變數的區別。static 修飾的變數稱為類變數或全域性變數或成員變數,在類被載入的時候成員變數即被初始化,與類關聯,只要類存在,static變數就存在。非static修飾的成員變數是在物件new出來的時候劃分儲存空間,是與具體的物件繫結的,該成員變數僅為當前物件所擁有...
java 內部類與static
public class mystaticclass 輸出為0 public class mystaticclass public static void main string args 輸出報錯 the field a cannot be declared static in a non sta...
Java中static方法疑惑
1 關於,main方法是static方法,但是為什麼非要是static。原因就是,如果乙個類她定義了main方法的話,那麼她的main方法會在這個類的建構函式執行之前被呼叫。由於main方法執行的時候尚未在jvm裡生成相應物件 建構函式未被執行 所以要宣告為static。2 這就涉及到下面的問題,和...