Java內部類的自我理解
阿新 • • 發佈:2018-12-26
package SE.InnerClass; public class Outer { private static int i = 1; private int j = 10; private int k = 20; public static void outer_f1() { } public void outer_f2() { } class Inner { // static int inner_i = 100;//內部類中不允許定義靜態變數 static final int inner = 100;// 但是可以用static final int j = 100; int inner_i = 1; void inner_f1() { System.out.println(i); // 在內部類中訪問內部類自己的變數直接用變數名 System.out.println(j); // 在內部類中訪問內部類自己的變數也可以用this.變數名 System.out.println(this.j); // 在內部類中訪問外部類中與內部類同名的例項變數用外部類名.this.變數名 System.out.println(Outer.this.j); // 如果內部類中沒有與外部類同名的變數,則可以直接用變數名訪問外部類變數 System.out.println(k); outer_f1(); outer_f2(); } } public void outer_f3() { Inner inner = new Inner(); inner.inner_f1(); } // 外部類的靜態方法訪問成員內部類,與在外部類外部訪問成員內部類一樣 public static void outer_f4() { Outer out = new Outer(); Inner inner = out.new Inner(); inner.inner_f1(); } /** * <p> * </p> * * @author zhangjunshuai * @date 2014-7-1 上午10:17:23 * @param args */ public static void main(String[] args) { // outer_f4();//該語句的輸出結果和下面三條語句的輸出結果一樣 // 如果要直接建立內部類的物件,不能想當然地認為只需加上外圍類Outer的名字, // 就可以按照通常的樣子生成內部類的物件,而是必須使用此外圍類的一個物件來 // 建立其內部類的一個物件: // Outer.Inner outin = out.new Inner() // 因此,除非你已經有了外圍類的一個物件,否則不可能生成內部類的物件。因為此 // 內部類的物件會悄悄的連結到建立他的外圍類的物件。如果你用的是靜態的內部類, // 那就不需要對其外圍類物件的引用。 Outer out = new Outer(); Outer.Inner outin = out.new Inner(); outin.inner_f1(); } }