Re: 一個很笨的問題

看板java作者時間20年前 (2004/07/18 01:01), 編輯推噓0(000)
留言0則, 0人參與, 最新討論串2/2 (看更多)
※ 引述《fish1217@kkcity.com.tw ( π = 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
文章代碼(AID): #10-LjH00 (java)
文章代碼(AID): #10-LjH00 (java)