在 Java 中,靜態類和非靜態內部類之間的區別是什麼?
以下列出內部類和靜態內部類之間的顯著差異。
訪問外部類的成員
靜態內部類可以直接訪問外部類的靜態成員。但是,要訪問外部類的例項成員,你需要例項化外部類。
示例
public class Outer { int num = 234; static int data = 300; public static class Inner{ public static void main(String args[]){ Outer obj = new Outer(); System.out.println(obj.num); System.out.println(data); } } }
輸出
234 300
非內部類可以直接訪問它外部類的成員(既包括例項成員,也包括靜態成員),無需例項化。
示例
public class Outer2 { int num = 234; static int data =300; public class Inner{ public void main(){ System.out.println(num); System.out.println(data); } } public static void main(String args[]){ new Outer2().new Inner().main(); } }
輸出
234 300
擁有內部類中的靜態成員
不能把非靜態內部類中的成員設為靜態。只有頂層類和靜態內部類才允許靜態方法。
廣告