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
静态内部类在一些情况下非常有用。例如,当一个内部类不需要访问外部类的非静态成员,并且希望独立于外部类的实例存在时,就可以使用静态内部类来更好地实现封装和代码组织。
ICP备案:
公安联网备案: