# [Java] 類別(1) ###### tags: `Java` `類別` --- ```java= class CCircle // 定義類別CCircle { int radius; //宣告資料成員 static int count=0; // 資料成員count被宣告為static,表示屬於類別的,並不屬於各個物件分別擁有 public int show() { count++; return radius; } } public class app2_1 { public static void main(String args[]) { CCircle cir = new CCircle(); CCircle cir1 = new CCircle(); cir.radius = 5; cir1.radius = 6; System.out.println(cir.count); // 0 System.out.println(cir.show()); // 5 物件cir呼叫show() method將物件cir的資料成員radius的值印出來 System.out.println(cir.count); // 1 屬於類別的資料成員count = 0+1 System.out.println(cir1.show()); // 6 物件cir1呼叫show() method將物件cir1的資料成員radius的值印出來 System.out.println(cir.count); // 2 屬於類別的資料成員count = 1+1 } } ``` output: 0 5 1 6 2 --- 1. 由上方程式第22行、第24行,為分別取得物件cir和cir1的資料成員radius的值 2. 由於上方程式第3行,資料成員radius屬於各物件所擁有,所以無法透過類別作為名稱空間去存取radius的值。 即 :::info CCircle.radius ::: --- 若將上述程式碼第3行改為以下: ```java=3 static int radius; ``` 也就是 ```java= class CCircle // 定義類別CCircle { static int radius; // 資料成員radius被宣告為static,表示屬於類別的,並不屬於各個物件分別擁有 static int count=0; // 資料成員count被宣告為static,表示屬於類別的,並不屬於各個物件分別擁有 public int show() { count++; return radius; } } public class app2_1 { public static void main(String args[]) { CCircle cir = new CCircle(); CCircle cir1 = new CCircle(); cir.radius = 5; // 宣告屬於類別的資料成員radius的值為5,此時屬於類別的資料成員radius值為5 cir1.radius = 6; // 宣告屬於類別的資料成員radius的值被改為6,此時屬於類別的資料成員radius值為6 System.out.println(cir.count); // 0 System.out.println(cir.show()); // 6 物件cir呼叫show() method將屬於類別的資料成員radius的值印出來 System.out.println(cir.count); // 1 屬於類別的資料成員count = 0+1 System.out.println(cir1.show()); // 6 物件cir1呼叫show() method將屬於類別的資料成員radius的值印出來 System.out.println(cir.count); // 2 屬於類別的資料成員count = 1+1 } } ``` output: 0 6 1 6 2 --- 然而被宣告為static的資料成員,若要存取這類的資料成員,可以將類別名稱作為名稱空間去存取資料成員 --- ```java= class CCircle // 定義類別CCircle { static int radius; // 資料成員radius被宣告為static,表示屬於類別的,並不屬於各個物件分別擁有 static int count=0; // 資料成員count被宣告為static,表示屬於類別的,並不屬於各個物件分別擁有 public int show() { count++; return radius; } } public class app2_1 { public static void main(String args[]) { CCircle cir = new CCircle(); CCircle cir1 = new CCircle(); cir.radius = 5; // 宣告屬於類別的資料成員radius的值為5,此時屬於類別的資料成員radius值為5 cir1.radius = 6; // 宣告屬於類別的資料成員radius的值被改為6,此時屬於類別的資料成員radius值為6 System.out.println(cir.count); // 0 System.out.println(cir.show()); // 6 物件cir呼叫show() method將屬於類別的資料成員radius的值印出來 System.out.println(cir.count); // 1 屬於類別的資料成員count = 0+1 System.out.println(cir1.show()); // 6 物件cir1呼叫show() method將屬於類別的資料成員radius的值印出來 System.out.println(cir.count); // 2 屬於類別的資料成員count = 1+1 System.out.println("存取類別CCirclek的類別資料成員count的值為" + CCircle.count); //由上一行計算完畢為2,因此,此行會印出2 } } ``` 由第25行,為了取得類別CCircle的類別資料成員count的值,可以將類別名稱作為名稱空間去存取資料成員count的內容 :::success CCircle.count ::: --- 由於上方程式碼第3行,資料成員radius為屬於類別的資料成員,而非各物件分別擁有的資料成員,因此可以亦可以將類別名稱作為名稱空間去存取屬於類別的資料成員radius的內容,如下方程式碼第26行。 ```java= class CCircle // 定義類別CCircle { static int radius; // 資料成員radius被宣告為static,表示屬於類別的,並不屬於各個物件分別擁有 static int count=0; // 資料成員count被宣告為static,表示屬於類別的,並不屬於各個物件分別擁有 public int show() { count++; return radius; } } public class app2_1 { public static void main(String args[]) { CCircle cir = new CCircle(); CCircle cir1 = new CCircle(); cir.radius = 5; // 宣告屬於類別的資料成員radius的值為5,此時屬於類別的資料成員radius值為5 cir1.radius = 6; // 宣告屬於類別的資料成員radius的值被改為6,此時屬於類別的資料成員radius值為6 System.out.println(cir.count); // 0 System.out.println(cir.show()); // 6 物件cir呼叫show() method將屬於類別的資料成員radius的值印出來 System.out.println(cir.count); // 1 屬於類別的資料成員count = 0+1 System.out.println(cir1.show()); // 6 物件cir1呼叫show() method將屬於類別的資料成員radius的值印出來 System.out.println(cir.count); // 2 屬於類別的資料成員count = 1+1 System.out.println("存取類別CCirclek的類別資料成員count的值為" + CCircle.count); //由上一行計算完畢為2,因此,此行會印出2 System.out.println(CCircle.radius); } } ```