精華區beta java 關於我們 聯絡資訊
來統整一下三位大大的解說 ======================== Q: main method 為何要在傳回型態前要加 static 的原因??? A: littlebie98: main一定要是static,因為是程式最開始的進入點 RedRabbit: 它是在物件還沒創出來就要執行的方法 加了static可以直接在類別裡面被執行 不然要用new產生新物件 初學者先不要去討論這估東西啦 後面會提到 ytterbium: 初學者, 只要記住所有application程式碼的main 都是這樣宣告就是了. 如果不是static, 那一開始就沒有object, 所以就不能call this method Q: 在類別裡面宣告傳回值的方法為何前面要加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 -- ┌─────程式設計樂園─────┐  ̄ ▌ ̄ ╲╱ BBS 城邦 CSZone.kkcity.com.tw ╴ ▌ ▌ ▏ KK免費撥接 └──From:218.162.36.99 ──┘ 電話:449-1999 帳號:kkcity 密碼:kkcity > -------------------------------------------------------------------------- < 發信人: qrtt1.bbs@bbs.sayya.org (停下來, 想一想), 看板: java 標 題: Re: 一個很笨的問題 發信站: SayYA 資訊站 (Sat Jul 17 08:51:45 2004) 轉信站: ptt!ctu-reader!news.nctu!SayYa ※ 引述《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