外部類如何調用靜態內部類中的屬性和方法
1)外部類可以通過創建靜態內部類實例的方法來調用靜態內部類的非靜態屬性和方法
2)外部類可以直接通過“ 外部類.內部類.屬性(方法)” 的方式直接調用靜態內部類中的靜態屬性和方法
靜態內部類如何調用外部類的屬性和方法
靜態內部類如果要訪問外部的成員變量或者成員方法,那么必須是靜態的
1)靜態內部類可以直接調用外部類的靜態屬性和方法
2)靜態內部類可以通過創建外部類實例的方法調用外部類的非靜態屬性和方法
如何創建靜態內部類實例
創建靜態內部類的時候是不需要將靜態內部類的實例對象綁定到外部類的實例對象上
靜態內部類屬於外部類,而不是屬於外部類的對象
1)在非外部類中:外部類名.內部類名 name = new 外部類名.內部類名();
2)在外部類中:內部類名 name = new 內部類名();
public class Outer { // 定義一個實例變量和一個靜態變量 private int a; private static int b; // 定義一個靜態方法和一個非靜態方法 public static void say() { } public void test() { // 在外部類中調用內部類的屬性和方法 Outer.Inner.c = 1; // 可以通過靜態內部類的全類名來調用靜態內部類的靜態屬性(外部類名.靜態內部類名.屬性) Outer.Inner.go(); // 可以通過靜態內部類的全類名來調用靜態內部類的靜態方法(外部類名.靜態內部類名.方法) // Outer.Inner.walk(); //不能通過類靜態內部類的全類名來調用內部類的非靜態屬性和方法 Inner inner = new Inner(); //可以通過創建內部類實例來調用靜態內部類的非靜態屬性和方法 inner.d = 1; inner.walk(); } // 靜態內部類 public static class Inner { // 在靜態內部類中定義一個靜態變量和一個實例變量 static int c; int d; // 定義一個匿名代碼塊和一個靜態代碼塊 { } static { } // 定義一個靜態方法和一個普通方法 public static void go() { } public void walk() { // 在靜態內部類中調用外部類的屬性和方法 int f = b; // 可以直接調用外部類的靜態屬性 say(); // 可以直接調用外部類的靜態方法 // int e = a; 直接調用外部類的非靜態屬性出錯編譯出錯 // test(); 直接調用外部類的非靜態方法時編譯出錯 Outer outer = new Outer(); int e = outer.a; // 可以通過創建外部類實例來調用外部類的非靜態屬性 outer.test(); // 可以通過創建外部類實例來調用外部類的非靜態方法 } } }