看板java
標 題Re: 一個很笨的問題
發信站SayYA 資訊站 (Sat Jul 17 08:51:45 2004)
轉信站ptt!ctu-reader!news.nctu!SayYa
※ 引述《[email protected] ( π = 3.1415962)》之銘言:
> 在類別裡面宣告傳回值的方法為何前面要加static
> 是否是因為main的那個static的關係呢?
> A:
> littlebie98:
> static- 靜態
> 修飾在method上面,
> 有與object無關的意思(指和裡面的member的關係)
> (
> 籠統的來看...更容易理解的方式..
> 就是不需要new就可用的就叫static...
> A a = new A();
> a.f();==>這是與object有關
> A.k();=>這是與object無關
> )
> 因此,若是一個A.k()用到一個和object有關member or funtion,
> 建構後才有的那還真是怪,所以 static funtion只能使用static member
> 和static funtion
> ytterbium:
> 兩個完全沒關係, static表示這個method is class method 而
> 不是 object method
> RedRabbit:
> 你說的一點也沒錯,就是因為這個原因
> 對於第二個問題各大大間彼此有不同的意見
> 再請問那一個說法才是正確滴.....@@a??
> 也謝謝 littlebie98、ytterbium 及 RedRabbit 精闢的解說
> fish
首先,你要了解static對於一個class或一個object的意義有什不同
static method ==> 不需產生物件實體就能使用 <== 你產生了實體還是能用
class A {
static void a(){;}
}
你能這樣用 A.a();
也能這樣用 A a = new A(); a.a();
static 的另一個語意是,「class的」
到這地步,你可以完全忘了物件的存在,所有static都可以想成class的
static member ==>
class A{
public static A self = new A();
private A(){;}
static int a;
}
不管你產生幾個實體,self只有一個,a也只有一個。
利用這樣的特性,能有很多有趣的應用。
而,你目前的盲點在之前的用法,
你需要一個不用需實體的method/variable,就用static
static int add(int a){return 10+a;}
也只是一個單純的static method,
是由寫程式的人決定的。
而public static void main(){}
在你程式還沒執行前,不會有實體產生的,
你沒有實體,就不能控制其他非static的method
所以,main,一定要static。
--
如果
當初我
沒有勇
氣去嘗試
看來幾乎不可
能的事
,
如今我就還
只是個牧
羊人而已
。
[牧羊少
年奇幻之
旅]
--
※ Origin: SayYA 資訊站 <bbs.sayya.org>
◆ From: pc210-59-94-172.ntntc.edu.tw