public class Ques0307 {
private String s1 = "Ques0307 string";
class InnerClass {
private String s2 = "inner string";
public void innerMethod() {
System.out.println(s1);
System.out.println(s2);
}
}
public static void outerMethod() {
Ques0307.InnerClass inner = new Ques0307().new InnerClass();
inner.innerMethod();
}
public static void main(String[] args) {
outerMethod();
}
}
主程式能否正常運行輸出結果?
Ques0307 string inner string
InnerClass 是**非靜態內部類** (成員內部類),實例化語法:new Outer().new Inner()。outerMethod 中,先建立外部類實例 new Ques0307(),再用該實例建立內部類 .new InnerClass(),完全合法。innerMethod 可直接存取外部類實例欄位 s1 (即使 private) 及自身欄位 s2。static (巢狀類),則無需外部實例即可 new Outer.Inner()。