Discussion:
[問題] 有關static 的問題??
(时间太久无法回复)
2007-07-22 17:18:35 UTC
Permalink
新手一直發問....麻煩各位前輩解答..感激不盡

class A
{
static int i=10;
}

final class B extends A
{
int i =5;
public static void main(String [] args)
{
System.out.println(i);
}
}

1.編譯時發生錯誤,因為子類別不能宣告成final
2.編譯時發生錯誤,靜態方法不能取用物件屬性
3.執行時列出"10"
4.執行時列出"5"

我編譯的時出現錯誤 上面出現 說 varible i cannot be refrecnce from static context
是指選項2的答案嗎?

我想在請問
1.子類別是否可以寫成final 如果可以表示說"繼承完後 不能在被其他人繼承"
如果不行表示說"子類別不能寫成final"無法編譯
2.如果我今天想要印出i值,我是不是必須在class A中
寫一個 static {int i =10 } 這樣呢?

--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 218.162.197.185
每天進步一點點
2007-07-22 23:04:39 UTC
Permalink
※ 引述《mixfuture (恩)》之銘言:
: 新手一直發問....麻煩各位前輩解答..感激不盡
: class A
: {
: static int i=10;
: }
: final class B extends A
: {
: int i =5;
: public static void main(String [] args)
: {
: System.out.println(i);
: }
: }
: 1.編譯時發生錯誤,因為子類別不能宣告成final
錯,可以宣告成final
: 2.編譯時發生錯誤,靜態方法不能取用物件屬性
static method不能存取與物件相關的data member,或member function
原因就在static method並沒有this這個參考
: 3.執行時列出"10"
static data field不用產生instance就能存取, A.i
: 4.執行時列出"5"
與物件相關的data field必須要有instance才能存取
: 我編譯的時出現錯誤 上面出現 說 varible i cannot be refrecnce from static context
: 是指選項2的答案嗎?
要產生instance才能存取
EX:
B b = new B();
System.out.print(b.i);
: 我想在請問
: 1.子類別是否可以寫成final 如果可以表示說"繼承完後 不能在被其他人繼承"
這是對的
: 2.如果我今天想要印出i值,我是不是必須在class A中
: 寫一個 static {int i =10 } 這樣呢?
????????????????????不是很懂你的意思
我想上面應該有解了你這個問題了!


--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 218.170.48.82
※ 編輯: tgbsa 來自: 218.170.48.82 (07/23 07:04)
Loading...