温馨提示×

Java 内部类咋定义

小樊
81
2024-10-24 09:10:05
栏目: 编程语言

在 Java 中,内部类(Inner Class)是定义在另一个类的内部的类。根据内部类与外部类的关系,可以分为四种类型:成员内部类、局部内部类、匿名内部类和静态内部类。下面分别介绍这四种类型的定义方法。

  1. 成员内部类(Member Inner Class): 成员内部类是定义在外部类的成员位置上的类,它可以访问外部类的所有成员(包括私有成员)。成员内部类的定义与普通类相同,只是在类名前面加上外部类的类名即可。例如:
public class OuterClass {
    private int outerData = 0;

    public class InnerClass {
        public void accessOuterData() {
            System.out.println("outerData = " + outerData);
        }
    }
}
  1. 局部内部类(Local Inner Class): 局部内部类是定义在方法或代码块中的类。局部内部类只能访问所在方法或代码块中的final变量(包括实际上被声明为final的变量,以及实际上没有被修改其值的变量)。局部内部类的定义与普通类相同,只是在类名前面加上外部类的类名即可。例如:
public class OuterClass {
    public void createLocalInnerClass() {
        final int localData = 0;

        class LocalInnerClass {
            public void accessLocalData() {
                System.out.println("localData = " + localData);
            }
        }

        LocalInnerClass localInner = new LocalInnerClass();
        localInner.accessLocalData();
    }
}
  1. 匿名内部类(Anonymous Inner Class): 匿名内部类是没有名字的内部类,通常用于创建一次性使用的对象,例如实现接口或继承其他类。匿名内部类的定义与普通类相似,只是在类名位置使用关键字 new,并紧接着给出类的构造函数和实现代码。例如:
public class OuterClass {
    public void createAnonymousInnerClass() {
        new Object() {
            public void printMessage() {
                System.out.println("This is an anonymous inner class.");
            }
        }.printMessage();
    }
}
  1. 静态内部类(Static Inner Class): 静态内部类是定义在外部类的静态成员位置上的类。静态内部类不能访问外部类的非静态成员,但可以通过外部类实例访问静态成员。静态内部类的定义与普通类相同,只是在类名前面加上 static 关键字。例如:
public class OuterClass {
    private static int outerStaticData = 0;

    public static class StaticInnerClass {
        public void accessOuterStaticData() {
            System.out.println("outerStaticData = " + outerStaticData);
        }
    }
}

0