靜態(tài)內(nèi)部類
public class External {
private static int shared = 100;
public static class StaticInner {
public void innerMethod() {
System.out.println("inner -> shared: " + shared);
}
}
public void test() {
StaticInner staticInner = new StaticInner();
staticInner.innerMethod();
}
public static void main(String[] args) {
External external = new External();
external.test();
}
}
成員內(nèi)部類
public class External {
private static int shared = 100;
public class Inner {
public void innerMethod() {
System.out.println("inner -> shared: " + shared);
// 可以通過(guò) "類名.this.方法名" 調(diào)用,也可以直接通過(guò)方法名調(diào)用
// External.this.action();
action();
}
}
private void action() {
System.out.println("external -> action()");
}
public void test() {
Inner inner = new Inner();
inner.innerMethod();
}
public static void main(String[] args) {
External external = new External();
external.action();
external.test();
// 成員內(nèi)部類是把類當(dāng)做一個(gè)屬性为牍,所以成員內(nèi)部類總是與外部相關(guān)聯(lián)的湃密。
// 在外部使用時(shí),它不能直接通過(guò) "new External.Inner()" 的方法創(chuàng)建。
// 必須先實(shí)例化一個(gè)外部類,通過(guò) "外部類.new" 的方法實(shí)例化
External.Inner inner = external.new Inner();
inner.innerMethod();
}
}
方法內(nèi)部類
public class External {
private int shared = 100;
private static String S = "S";
public void test(final int param) {
final String s = "s";
// 方法內(nèi)部類定義在外部類的方法中。
// 方法內(nèi)部類只可以在定義的方法中被使用耕拷。
class Inner {
public void innerMethod() {
// 方法內(nèi)部類可以訪問(wèn)外部類的靜態(tài)、非靜態(tài)的方法和屬性托享。
// 假如該方法是靜態(tài)方法骚烧,則只能訪問(wèn)外部類的靜態(tài)變量和方法
System.out.println("External -> shared: " + shared);
System.out.println("External -> S: " + S);
// 方法內(nèi)部類還可以訪問(wèn)方法內(nèi)中的局部變量浸赫,但是這些變量必須是 final 修飾的。
System.out.println("External -> s: " + s);
System.out.println("External -> param: " + param);
}
}
Inner inner = new Inner();
inner.innerMethod();
}
public static void main(String[] args) {
External external = new External();
external.test(200);
}
}
最后編輯于 :
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者