------ 文章開始 ------

package test01;

class 物件
{
    static int 靜態欄位;
    static void 靜態方法()
    {
     物件.靜態欄位 +=10; //靜態方法中呼叫靜態欄位,ok
     System.out.println("靜態方法執行。物件.靜態欄位 +=10;");
    }
    
    int 動態欄位;
    void 動態方法()
    {
     物件.靜態欄位 +=1; //在動態方法中呼叫靜態方法,ok
     this.動態欄位 +=1; //呼叫自己本身的欄位,ok
     System.out.println("動態方法執行。物件.靜態欄位 +=1;this.動態欄位 +=1;");
    }

    static
    {
     物件.靜態欄位 = 5; //注意,是「物件」.靜態欄位
     // this.動態欄位 = 10; //靜態物件中使用this,一定會編譯錯誤
     System.out.println("物件的靜態建構子執行。物件.靜態欄位 = 5;");
    }
    物件()
    {
     this.動態欄位 = 100; //注意,是「this」.動態欄位
     // this.靜態欄位 =10; //使用this去使用靜態欄位。可以執行,但是不建議。
     System.out.println("物件的動態建構子執行。this.動態欄位 = 100;");
    }
}

public class RunMain
{

/**
 * @param args
 */
public static void main(String[] args)
{

// TODO Auto-generated method stub
System.out.println("=====測試開始=====");
物件.靜態方法(); //沒問題,靜態方法可以直接執行。 但請注意它執行了些什麼。
//應該會多一行「物件的靜態建構子執行。」
// 物件.動態方法(); //這一行會出現錯誤,因為沒有物件實體
System.out.println("物件.靜態欄位:"+物件.靜態欄位);
System.out.println("==================\n");

 //看懂這一篇後,打算進一步了解建構子的運作的話,你可以把這段之前的程式碼都註解起來
 //看看一開始就直接宣告物件的程式碼會怎麼跑
 //============================================================================


System.out.println("=====宣告物件=====");
物件 新物件 = new 物件(); //宣告一個實體,你會發現宣告這個動作會讓程式去跑一次建構子
//如果你之前從未動過任何靜態方法或是欄位,那這時也會先執行靜態建構子
System.out.println("物件.靜態欄位:"+物件.靜態欄位);
System.out.println("新物件.動態欄位:"+新物件.動態欄位);
System.out.println("==================\n");

System.out.println("=====使用物件=====");
新物件.動態方法(); //有實體,所以可以使用欄位
System.out.println("物件.靜態欄位:"+物件.靜態欄位);
System.out.println("新物件.動態欄位:"+新物件.動態欄位);
System.out.println("==================\n");

System.out.println("====第二個物件====");
物件 物件二 = new 物件();
System.out.println("物件.靜態欄位:"+物件.靜態欄位); //兩個物件使用同個靜態欄位
System.out.println("新物件.動態欄位:"+新物件.動態欄位); //這兩個物件有各自獨立的「動態欄位」
System.out.println("物件二.動態欄位:"+物件二.動態欄位); //兩個值都不一樣,彼此不相干
System.out.println("==================\n");

System.out.println("=兩個物件各自獨立=現在 物件二.動態欄位+=1000;");
物件二.動態欄位+=1000;
System.out.println("物件.靜態欄位:"+物件.靜態欄位);
System.out.println("新物件.動態欄位:"+新物件.動態欄位);
System.out.println("物件二.動態欄位:"+物件二.動態欄位);
System.out.println("==================\n");
}
}
------ 文章結尾 ------

[複製網址] [開新視窗] [檢舉短網址] [QR條碼]

服務條款 - 加入會員(免費) - 回報問題網址 - 聯絡偶們 -

© 2025 PPT.cc