看板 - 閱讀文章

您現在的位置是 java - [Java] 最近流行自刪文 [哈欠] 。
^ 返回文章列表 | < 前一篇 | 下一篇 >

作者: aMaa (aMa) 看板: java
標題: [問題] 類別的方法中為什麼可以建立本身類別的物件?
時間: Fri Nov 27 01:48:53 2009


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
推 ogamenewbie:你要不要先 google public static void main 是幹麻的  11/27 02:11
推 PttTime:static修飾字的method屬於class層級                       11/27 02:36
推 SansWord:其實這是好問題耶∼牽扯到Compiler怎麼實作這件事         11/27 04:15
推 brianhsu:謎之音:為什麼函數可以呼叫自己?函數不是給人呼叫的嗎   11/27 06:48

我知道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)
→ weiyucsie:都可以吧?                                            11/27 09:36
推 snowlike:new()是建構另個實體,不是'自己本身';類別只是份設計圖  11/27 10:30
推 ogamenewbie:我弄錯重點, 抱歉, 你可以考慮 google Singleton,      11/27 12:07
→ ogamenewbie:不過 google 你大概會想打死我...                     11/27 12:07
→ ken915007:好奇~為啥你要說供給"別的"類別去使用…應該是給類別去   11/27 12:26
→ ken915007:使用~沒限定一定要別的類別可以用吧...                  11/27 12:28
→ adrianshum:反倒是我想問 "為什麼不可以 new" ?                    11/27 15:50
→ InitialShuk:他卡在 先有蛋還是先有雞... 可是跟這沒關係           11/27 18:59
→ diaplo4:如果在main裡加入 bb.main(); 會發生什麼事呢...?          11/27 23:52
   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)
→ jej:施主..這就要問你 實體和物件分別是什麼意思了??               11/28 02:23
→ jej:拿資料庫來比喻, 實體: 資料庫(裝好而已) 物件: 有資料的資料   11/28 02:26
→ jej:類別宣告好, 沒有newInstance不成物件. newInstance後放在heap  11/28 02:31
→ jej:至於可能會問static method什麼的..那是用reflection寫得..     11/28 02:33
→ jej:或是一些design pattern來幫助物件的形成...暫時不討論..       11/28 02:35
→ f953024:原PO聽說是我學弟@@?                                     11/30 14:03
→ aMaa:我是女生 :)                                                12/01 18:16
推 akaing:注意是只能存取 是指參數部份 你在scope內要怎麼寫都可以    01/06 17:24