📜  Java静态嵌套类

📅  最后修改于: 2020-09-26 12:41:48             🧑  作者: Mango

Java静态嵌套类

在类中创建的静态类即静态嵌套类在Java中称为静态嵌套类。它无法访问非静态数据成员和方法。可以通过外部类名称访问。

  • 它可以访问外部类(包括私有)的静态数据成员。
  • 静态嵌套类无法访问非静态(实例)数据成员或方法。

具有实例方法的Java静态嵌套类示例

class TestOuter1{
  static int data=30;
  static class Inner{
   void msg(){System.out.println("data is "+data);}
  }
  public static void main(String args[]){
  TestOuter1.Inner obj=new TestOuter1.Inner();
  obj.msg();
  }
}

输出:

data is 30

在此示例中,您需要创建静态嵌套类的实例,因为它具有实例方法msg()。但是您无需创建Outer类的对象,因为嵌套类是静态的,并且静态属性,方法或类都可以在没有对象的情况下进行访问。

编译器生成的内部类

import java.io.PrintStream;
static class TestOuter1$Inner
{
TestOuter1$Inner(){}
void msg(){
System.out.println((new StringBuilder()).append("data is ")
.append(TestOuter1.data).toString());
}  
}

具有静态方法的Java静态嵌套类示例

如果您在静态嵌套类中具有静态成员 ,则无需创建静态嵌套类的实例。

class TestOuter2{
  static int data=30;
  static class Inner{
   static void msg(){System.out.println("data is "+data);}
  }
  public static void main(String args[]){
  TestOuter2.Inner.msg();//no need to create the instance of static nested class
  }
}

输出:

data is 30