來統整一下三位大大的解說
========================
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