在 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 次浏览

开创你的 职业生涯

通过完成该课程获得认证

开始吧
广告