# 類別函數

> 類別變數：物件共享，佔用在同一個記憶體
>
> 類別函數：可以直接呼叫

類別函數的定義方式也是相同的：

加上 static 就可以定義為類別函數

```
public static void example()
   {
      ....
   }
```

另外在使用上，可以直接透過類別名稱呼叫。

```
類別名稱.example();
```

帶入以下完整範例： 結合 [類別變數](/java-10/java-10-2.md)

```
class CCircle
{
   private static int count=0;      // 宣告為類別變數
   private static double pi=3.14;   // 宣告為類別變數
   private double radius;

   public CCircle()           // 建構元 無引數
   {
      this(1.0);              // 呼叫一個引數的建構元
   }
   public CCircle(double r)      // 建構元 一個引數
   {
      radius=r;
      count++;                   // 呼叫此建構元 則加一
   }
   public void show()
   {
      System.out.println("area="+pi*radius*radius);
   }
   public static void show_count()  // 宣告為類別函數
   {
      System.out.println(count+" object(s) created");
   }
}
public class instance_vs_class_03
{
   public static void main(String args[])
   {
      CCircle.show_count();      //直接使用類別來呼叫類別函數
      CCircle cir1=new CCircle();      //呼叫建構元
      CCircle.show_count();      //直接使用類別來呼叫類別函數
      CCircle cir2=new CCircle(2.0);   //呼叫建構元
      CCircle cir3=new CCircle(4.3);   //呼叫建構元
      cir3.show_count();         //亦可使用物件來呼叫類別函數
   }
}
```

在此範例完整整合了 類別變數與類別函數：

類別變數部分：

```
private static int count=0;      // 宣告為類別變數
private static double pi=3.14;   // 宣告為類別變數
```

類別函數部分：

```
public static void show_count()  // 宣告為類別函數
{
   System.out.println(count+" object(s) created");
}
```

在主程式可以見到：直接透過類別來呼叫類別函數

```
CCircle.show_count();      //直接使用類別來呼叫類別函數
```

另外亦可透過物件來呼叫類別函數：

```
CCircle cir3=new CCircle(4.3);   //呼叫建構元
cir3.show_count();         //亦可使用物件來呼叫類別函數
```

另外也還可以發現 主程式也是一個使用 static 的函數

```
public static void main(String args[])
```

因為要直接由類別 instance\_vs\_class\_03 呼叫，因此宣告為 static


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://java.4-x.tw/java-10/java-10-3.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
