---
# System prepended metadata

title: 內/外部類別

---

# 內/外部類別
```java=
public class A{    //外部類別：只能為公開、不可為靜態、可加final
    class Inner{   //內部類別：可以為隱私（通常也設為私有化）、可為靜態、可加final
        
    }
}
```
- 外部類別有的結構，內部類別也有
    - 建構子
    - 方法
- 內部類別可以屬性設置
    ```java=
    //這是一個公開類別下方
    private Inner inr;//於外部類別中將內部類別使用屬性方式呼叫；或在寫於方法中，詳參下方"完整檔案"的連結，有這種寫法
    ...
    ...
    public void method01(){//放入同類別下的公開方法中
        inr=new Inner();
        inr.method();
    }
    ```
    如果寫在建構子，於其他檔案中呼叫會直接運行，等同於：
    ```java=
    private Inner inr=new Inner();
    inr.method();
    ```
    
    也可以返回不同型態的值，範例如下：
    ```java=
    //一內部類別中
    public int m(){ //我發現這裡型態為空時疑似印不出來東西
        ...println("Inner");
        return 10;
    }
    ```
    ```java=
    //同class下一個公開方法（已設置屬性）
    public int method(){ 
        inr=new Inner();
        return inr.method();
    }
    ```
    - 以上方法在其他檔案中實體化
    ```java=
    //某個檔案的某一方法中
    Demo01 d=new Demo01();
    d.method
    ```
    以上說明可能不是這麼好閱讀，可參考：[範例1完整檔案](/mI0u4LrGSIC4-ej8KfOohA)
    
[範例2完整檔案](/cMeTd5_1RpO6_y_exyqyDw)