
Java内部类(也称为嵌套类)是定义在另一个类的内部的类。它提供了某种方式,可以将逻辑上属于一个类的类组织在一起,从而增加代码的封装性和可读性。内部类可以访问其外部类的所有成员,包括私有成员。Java内部类主要有四种类型:静态内部类、成员内部类、局部内部类和匿名内部类。
1. 成员内部类成员内部类是最常见的内部类类型。它是外部类的一个成员,可以访问外部类的所有成员。
public OuterClass { private int outerData = 10; InnerClass { void message() { System.out.println("Inner data is " + outerData); } } public static void main(String args[]) { OuterClass outerObject = new OuterClass(); OuterClass.InnerClass innerObject = outerObject.new InnerClass(); innerObject.message(); } }2. 静态内部类静态内部类与静态变量和静态方法类似,它们都属于外部类本身,而不是外部类的某个对象。因此,静态内部类不能访问外部类的非静态成员。
public OuterClass { private static int outerData = 10; static StaticNestedClass { void message() { System.out.println("Static nested data is " + outerData); } } public static void main(String args[]) { OuterClass.StaticNestedClass nestedObject = new OuterClass.StaticNestedClass(); nestedObject.message(); } }3. 局部内部类局部内部类是定义在方法内部的类。它只在该方法内部可见,并且不能使用static修饰符
public OuterClass { private int outerData = 10; void testMethod() { LocalInnerClass { void message() { System.out.println("Local inner data is " + outerData); } } LocalInnerClass inner = new LocalInnerClass(); inner.message(); } public static void main(String args[]) { OuterClass outer = new OuterClass(); outer.testMethod(); } }4. 匿名内部类匿名内部类是一种没有类名的内部类。它通常用于简化代码,特别是当只需要创建一个类的单个对象时。
public OuterClass { interface InnerInterface { void message(); } public void testMethod() { InnerInterface inner = new InnerInterface() { @Override public void message() { System.out.println("This is an anonymous inner."); } }; inner.message(); } public static void main(String args[]) { OuterClass outer = new OuterClass(); outer.testMethod(); } }以上四种内部类在Java编程中都有广泛的应用,它们为开发者提供了更加灵活和强大的代码组织方式。