Java静态嵌套类

1 什么是Java静态嵌套类

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

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

2 包含成员方法静态嵌套类的例子

package com.yiidian;

/**
 * 一点教程网: http://www.yiidian.com
 */
/**
 * 包含成员方法静态嵌套类的例子
 */
class Demo{
    static int data=30;
    static class Inner{
        void msg(){System.out.println("data变量为:"+data);}
    }
    public static void main(String args[]){
        Demo.Inner obj=new Demo.Inner();
        obj.msg();
    }
}

输出结果为:

data变量为:30

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

3 Java嵌套内部类的工作原理

嵌套内部类被反编译后的源码为:

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

4 包含静态方法静态嵌套类的例子

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

package com.yiidian;

/**
 * 一点教程网: http://www.yiidian.com
 */
/**
 * 包含静态方法静态嵌套类的例子
 */
class Demo{
    static int data=30;
    static class Inner{
        static void msg(){System.out.println("data变量为: "+data);}
    }
    public static void main(String args[]){
        Demo.Inner.msg();//无需创建静态嵌套类的实例
    }
}

输出结果为:

data变量为: 30

 

推荐好课