iT邦幫忙

2023 iThome 鐵人賽

DAY 25
0

內部類

Java 內部類是一項強大而靈活的特性,允許您在一個類的內部定義另一個類。它提供了一種強大的機制,用於組織和封裝相關的程式碼。定義在其他類別內部的類別就被稱為內部類別,包含內部類類別也被稱為外部類別。

內部類的作用

  1. 提供更好的封裝,可以把內部類別隱藏在外部類別之內,不允許同一個套件中的其他類別存取該類別
  2. 內部類別成員可以直接存取外部類別的私有資料,因為内部類別被當成其外部
    類別成員,同一個類別的成員之間可以互相存取。但外部類別不能存取內部類
    別的實作細節,例如內部類别的成員變數。
  3. 匿名內部類別適合用於建立那些僅需要一次使用的類別
  4. 內部類 可以使用private、protected 、static修飾
  5. 非靜態內部類別不能擁有靜態成員

內部類類型

  1. 局部內部類
  2. 一般內部類
  3. 靜態內部類
  4. 匿名內部類

今天就先來介紹第一個內部類~

局部內部類

如果某類別只在某個方法中臨時需要, 把內部類別定義在方法中, 就可成為局部內部類,又可以稱方法內部類

注意:

  1. 生存範圍,只限該方法內有效。
  2. 方法內部類不宜加上存取修飾元,只能用abstract或final修飾, 故不可使用其他字符 (如 private、protected 等)。
  3. 靜態方法中的內部類別,則只能存取外部類別中的靜態成員。
  4. 方法內部類所定義的方法,只能存取內部類所在方法定義的final屬性
  5. 局部成員不能使用static修飾 ,因為上級程式單元是方法不是類別,用static 修飾沒有意義
public class OuterClass03 {
	static String os = "外部成員";
	int p = 9;

	public static void main(String[] args) {
		int a = 100;
		class Inner03 {
			String is = "內部成員";
			void print() {
				OuterClass03 t = new OuterClass03();
				System.out.println("p:" + t.p);
				System.out.println("os:" + OuterClass03.os);
				System.out.println("a:" + a);
				System.out.println("is:" + is);
			}
		}
		//建立內部物件
		Inner03 i03 = new Inner03();
		System.out.println("main is:" + i03.is);
		i03.print();
	}
}

這邊編譯後會產生兩個class檔:OuterClass03.class 和 OuterClass03$1Inner03.class ,這表示局部內部類會遵循這樣的命名格式:OuterClass$NInnerClass.class

同一個類別可能會有兩個以上同名的局部內部類(處於不同的方法中),所以Java為局部內部類的class檔名中多了一個數字用於區分,就是$N這個部分喔!

今天就先介紹到這邊拉~


上一篇
Day 24 比較介面和抽象類別
下一篇
Day 26 內部類 II
系列文
玩轉Java:從基礎打造你的程式超能力30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言