1. 靜態方法只與定義時所在的類相關,在編譯期就已經繫結到某個類。可以繼承,但不能在子類中被同名方法覆蓋.
網上有一句話:類的引用指向子類時,當用到方法時,呼叫的是子類的物件.當用到屬性時,用到的是父類物件.這個不適合靜態方法.
**測試如下:
public
class test1
static
int myfunction()
} public
class test2
extends test1
void doit()
static
int myfunction()
public
static
void main(string str)
}
因為不管是靜態方法,還是靜態成員,他只屬於這個類。類對像(class)沒有像例項一樣的包容形式。只能各自呼叫各自的靜態成員與方法。
靜態方法不能覆蓋
1.靜態方法只與定義時所在的類相關,在編譯期就已經繫結到某個類。可以繼承,但不能在子類中被同名方法覆蓋.網上有一句話 類的引用指向子類時,當用到方法時,呼叫的是子類的物件.當用到屬性時,用到的是父類物件.這個不適合靜態方法.測試如下 public class test1 static int myf...
靜態方法不能被重寫 覆蓋,只能被隱藏
為了說明這個例子,下面看一段 class parent public void print2 class child extends parent public void print2 public class main 我們知道,如果乙個類被宣告為父類,例項 new 卻為子類,那麼它呼叫父類中被覆...
關於靜態方法的覆蓋
靜態有個虛擬表,編譯的時候就已經確定了每個函式的位址。這裡面放著所有靜態方法的位址,這樣程式呼叫的時候,直接在這裡取位址,呼叫函式就可以了,速度比較快。而且不能被過載。動態方法,好像編譯的時候並不知道每個子類函式的位址,它是根據物件的所屬的類動態呼叫函式,靈活方便,並且提高了速度譬如 a class...