將一個類定義在另一個類裡面,對裡面那個類就稱為內部類(內置類、嵌套類)
- 內部類可以直接訪問外部類中的成員 -> 因為內部類持有了外部類的引用。 -> 外部類明.this
- 外部類要訪問內部類,必須建立內部類的對象。
- 內部類可以存放在局部位置上。 -> 內部類在局部位置上只能訪問局部中被 final 修飾的局部變量。
分析事物時,發現該事物描述中還有事物,而且這個事物還在訪問被描述事務的內容。
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();
}
}