在 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

擁有內部類中的靜態成員

不能把非靜態內部類中的成員設為靜態。只有頂層類和靜態內部類才允許靜態方法。

更新於: 2020 年 6 月 16 日

781 次瀏覽

開創你的 職業生涯

透過完成該課程獲得認證

開始吧
廣告