Java静态内部类的定义和使用(附带实例)
静态内部类是嵌套在另一个类中的类,并且使用关键字 static 进行修饰。
【实例】创建类 ExtClassStaticDemo,实现对静态内部类的创建,代码如下:
静态内部类可以包含静态和非静态成员,包括方法、变量和其他内部类。
【实例】创建类 ExtClassStaticDemo,实现对静态内部类的使用,代码如下:
静态内部类在一些情况下非常有用。例如,当一个内部类不需要访问外部类的非静态成员,并且希望独立于外部类的实例存在时,就可以使用静态内部类来更好地实现封装和代码组织。
Java静态内部类的定义
静态内部类与外部类的关系相对独立,它可以访问外部类的静态成员,但不能直接访问外部类的非静态成员。静态内部类不依赖外部类的实例存在,这意味着可以在不创建外部类对象的情况下创建静态内部类对象。【实例】创建类 ExtClassStaticDemo,实现对静态内部类的创建,代码如下:
public class ExtClassStaticDemo { private static int a = 10; private int b = 20; static class StaticInnerClassDemo { private int c = 30; public void testDemo() { // 访问外部类的静态成员 System.out.println(a); // 不能直接访问外部类的非静态成员 // System.out.println(b); // 可以直接访问静态内部类的非静态成员 System.out.println(c); } } }在上述代码中,StaticInnerClassDemo 是 ExtClassStaticDemo 的静态内部类,在静态内部类中可以直接访问外部类的静态成员,但不能访问外部类的非静态成员;在静态内部类中可以访问静态成员或非静态成员。
Java静态内部类的使用
可以通过“外部类名.内部类名”的方式创建静态内部类对象,无须先创建外部类对象。静态内部类可以包含静态和非静态成员,包括方法、变量和其他内部类。
【实例】创建类 ExtClassStaticDemo,实现对静态内部类的使用,代码如下:
public class ExtClassStaticDemo { private static int a = 10; private int b = 20; static class StaticInnerClassDemo { private int c = 30; public void testDemo() { // 访问外部类的静态成员 System.out.println(a); // 不能直接访问外部类的非静态成员 // System.out.println(b); // 可以直接访问静态内部类的非静态成员 System.out.println(c); } } } public class ExtClassStaticDemoTest { public static void main(String[] args) { ExtClassStaticDemo.StaticInnerClassDemo staticInnerClassDemo = new ExtClassStaticDemo.StaticInnerClassDemo(); staticInnerClassDemo.testDemo(); } }程序运行结果如下:
10
30
静态内部类在一些情况下非常有用。例如,当一个内部类不需要访问外部类的非静态成员,并且希望独立于外部类的实例存在时,就可以使用静态内部类来更好地实现封装和代码组织。