[問題] 類別的方法中為何可以建立本身類別的物件?

看板java作者 (aMa)時間14年前 (2009/11/27 01:48), 編輯推噓7(7014)
留言21則, 14人參與, 最新討論串1/6 (看更多)
public class Test { private int num; private double aa; public Test(){ num=3; aa=2.2; } public void show(){ System.out.println("ans="+num*aa); } public static void main(String[] args) { Test bb=new Test(); bb.show(); } } 這是一個Test類別,包含其建構元及屬性與方法(show(),main()), 我的問題是... 為什麼類別中的方法(main())可以new本身類別的物件? 我一直以為類別就像範本一樣,供給別人new出物件, 但為什麼自已的方法可以new出自已的物件 ? 我被搞混了,轉不過來...請大家幫忙 因為這樣,我看匿名內部類別及事件處理時一直不能理解其寫法 >< -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 218.168.157.51

11/27 02:11, , 1F
你要不要先 google public static void main 是幹麻的
11/27 02:11, 1F

11/27 02:36, , 2F
static修飾字的method屬於class層級
11/27 02:36, 2F

11/27 04:15, , 3F
其實這是好問題耶~牽扯到Compiler怎麼實作這件事
11/27 04:15, 3F

11/27 06:48, , 4F
謎之音:為什麼函數可以呼叫自己?函數不是給人呼叫的嗎
11/27 06:48, 4F
我知道public static void main是什麼,是JAVA程序的進入點, 但我的疑問是類別不是供給"別的類別"去使用,去new出物件, 這個例子,public static void main也算是Test Class中一個method, 為什麼可以從自已本身的method去new自已本身的物件....? static修飾字的method屬於class層級是什麼意思?所以可以new自已本身類別的物件? 還是即使一般方法也可以new自已本身....? ※ 編輯: aMaa 來自: 140.96.98.77 (11/27 09:34)

11/27 09:36, , 5F
都可以吧?
11/27 09:36, 5F

11/27 10:30, , 6F
new()是建構另個實體,不是'自己本身';類別只是份設計圖
11/27 10:30, 6F

11/27 12:07, , 7F
我弄錯重點, 抱歉, 你可以考慮 google Singleton,
11/27 12:07, 7F

11/27 12:07, , 8F
不過 google 你大概會想打死我...
11/27 12:07, 8F

11/27 12:26, , 9F
好奇~為啥你要說供給"別的"類別去使用…應該是給類別去
11/27 12:26, 9F

11/27 12:28, , 10F
使用~沒限定一定要別的類別可以用吧...
11/27 12:28, 10F

11/27 15:50, , 11F
反倒是我想問 "為什麼不可以 new" ?
11/27 15:50, 11F

11/27 18:59, , 12F
他卡在 先有蛋還是先有雞... 可是跟這沒關係
11/27 18:59, 12F

11/27 23:52, , 13F
如果在main裡加入 bb.main(); 會發生什麼事呢...?
11/27 23:52, 13F
main是static方法,只能存取同為static的成員 main只能執行環境使用,不能給外部類別使用 所以不能寫成bb.main,也不能把main當一般方法使用 這是我查到的資料 我的確是卡在類別這個範本敘述還沒完,中間method就new本身類別的物件, 覺得中間突然new出的物件怎知道該類別後面的敘述...? 今天我有實作測試一下, 不管是public static void main還是一般method都可以new本身類別的物件 只是不知道原理為何? 我再多上網查查好了 謝謝大家意見~ ※ 編輯: aMaa 來自: 220.140.4.36 (11/28 01:47)

11/28 02:23, , 14F
施主..這就要問你 實體和物件分別是什麼意思了??
11/28 02:23, 14F

11/28 02:26, , 15F
拿資料庫來比喻, 實體: 資料庫(裝好而已) 物件: 有資料的資料
11/28 02:26, 15F

11/28 02:31, , 16F
類別宣告好, 沒有newInstance不成物件. newInstance後放在heap
11/28 02:31, 16F

11/28 02:33, , 17F
至於可能會問static method什麼的..那是用reflection寫得..
11/28 02:33, 17F

11/28 02:35, , 18F
或是一些design pattern來幫助物件的形成...暫時不討論..
11/28 02:35, 18F

11/30 14:03, , 19F
原PO聽說是我學弟@@?
11/30 14:03, 19F

12/01 18:16, , 20F
我是女生 :)
12/01 18:16, 20F

01/06 17:24, , 21F
注意是只能存取 是指參數部份 你在scope內要怎麼寫都可以
01/06 17:24, 21F
文章代碼(AID): #1B3h-7g1 (java)
討論串 (同標題文章)
以下文章回應了本文 (最舊先):
完整討論串 (本文為第 1 之 6 篇):
文章代碼(AID): #1B3h-7g1 (java)