Skip to content

Latest commit

 

History

History
71 lines (50 loc) · 1.54 KB

內部類.md

File metadata and controls

71 lines (50 loc) · 1.54 KB

內部類

定義

將一個類定義在另一個類裡面,對裡面那個類就稱為內部類(內置類、嵌套類)

內部類訪問特點

  1. 內部類可以直接訪問外部類中的成員 -> 因為內部類持有了外部類的引用。 -> 外部類明.this
  2. 外部類要訪問內部類,必須建立內部類的對象。
  3. 內部類可以存放在局部位置上。 -> 內部類在局部位置上只能訪問局部中被 final 修飾的局部變量。

使用時機

分析事物時,發現該事物描述中還有事物,而且這個事物還在訪問被描述事務的內容。

Example

public class Outer {
	
	private static int num = 5;
	
	static class Inner {//內部類
		
		public void show() {
			System.out.println(num);//直接訪問外部類成員 -> 等於 Outer.num
		}
	}
	
	public void method() {
		
		Inner in = new Inner();
		in.show();
	}
}

public class Outer2 {
	
	public void method() {
		
		final int X = 10;
		
		class Inner2 {//局部內部類
			
			void show() {
				System.out.println(X);
			}
		}
		
		Inner2 in = new Inner2();
		in.show();
	}
}

public class InnerClassDemo {

	public static void main(String[] args) {
		
//		Outer o = Outer();
//		o.method();
		
		//直接訪問外部類中內部類中的成員,但不常見,因為內部類常被定義為 private 的。
//		Outer.Inner in = new Outer().new Inner();
//		in.show();
		
		//如果內部類是靜態的,相當於一個外部類
		Outer.Inner in = new Outer.Inner();
		in.show();
		
		//局部內部類
		new Outer2().method();
	}
}