Discussion:
[問題] 關於static
(时间太久无法回复)
ahli
2006-08-17 01:11:43 UTC
Permalink
不好意思,小弟最近拿起java複習,
剛爬過文,也看了書想了很久...
關於static的解釋還是不完全了解,
下面po上我的想法與問題,
觀念有錯誤的話還勞煩大大指證...


我的想法是這樣的:

貫上static的method應該是跟類別有關係,不是用物件來呼叫,
而是直接用class.method XXX 來呼叫.
所以它跟物件應該是沒有關係的,method本身也沒有位址.

這是它跟一般用物件呼叫的method不同的地方.

我的問題是...

1.main也是static method,為什麼他可以用new來建立物件,
這些物件是用來呼叫實例變數與函數的 (ex:CCircle c1=new CCircle())
不是說static method不能存取實例變數與函數嗎?

2.我在看上課筆記的時候有看到,static method可以存取區域變數,
請問那是指,method自己獨有的變數嗎?



麻煩各位大大了..

--



BreezeSky

--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 61.221.156.219
※ 編輯: ahli 來自: 61.221.156.219 (08/17 17:11)
淺水中
2006-08-17 01:21:59 UTC
Permalink
※ 引述《ahli (ahli)》之銘言:
: 不好意思,小弟最近拿起java複習,
: 剛爬過文,也看了書想了很久...
: 關於static的解釋還是不完全了解,
: 下面po上我的想法與問題,
: 觀念有錯誤的話還勞煩大大指證...
: 我的想法是這樣的:
: 貫上static的method應該是跟類別有關係,不是用物件來呼叫,
: 而是直接用class.method XXX 來呼叫.
: 所以它跟物件應該是沒有關係的,method本身也沒有位址.
: 這是它跟一般用物件呼叫的method不同的地方.
: 我的問題是...
: 1.main也是static method,為什麼他可以用new來建立物件,
: 這些物件是用來呼叫實例變數與函數的 (ex:CCircle c1=new CCircle())
: 不是說static method不能存取實例變數與函數嗎?
static method不能存取現今所在的class的非static 的data member(也就是this指標)
new出來的instance可以
例如
public class a{
int var = 1;
public static void main(String [] args){
var = 0; <---error,這是不合法的
}
}


: 2.我在看上課筆記的時候有看到,static method可以存取區域變數,
: 請問那是指,method自己獨有的變數嗎?
: 麻煩各位大大了..
static method 存取在他scope下的local variable
例如
public static void main(String [] args){
int i=0; <---第2點指的是這個
}

--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 140.123.105.36

Loading...