📅  最后修改于: 2023-12-03 15:31:58.040000             🧑  作者: Mango
在Java中,内部类是一种嵌套在其他类中的类。它可以访问外部类的所有成员,包括私有成员。内部类可以分为四种类型:成员内部类、局部内部类、匿名内部类和静态嵌套类。
成员内部类是定义在外部类中的普通类,可以访问外部类的所有成员。以下是一个基本示例:
public class Outer {
private int x = 10;
public class Inner {
public void printX() {
System.out.println(x);
}
}
public static void main(String[] args) {
Outer outer = new Outer();
Outer.Inner inner = outer.new Inner();
inner.printX(); // 输出10
}
}
局部内部类是定义在方法内部的类。它只能在方法内部被访问,但它可以访问方法内的变量和参数,即使它们是final的。以下是一个基本示例:
public class Outer {
private int x = 10;
public void printX() {
int y = 20;
class Inner {
public void printXY() {
System.out.println(x + y);
}
}
Inner inner = new Inner();
inner.printXY(); // 输出30
}
public static void main(String[] args) {
Outer outer = new Outer();
outer.printX();
}
}
匿名内部类是一种没有名字的内部类。它通常用于创建接口的实例或者继承一个类并重写它的方法。以下是一个基本示例:
public class Outer {
public interface Hello {
public void sayHello();
}
public void printHello() {
new Hello() {
public void sayHello() {
System.out.println("Hello, World!");
}
}.sayHello(); // 输出Hello, World!
}
public static void main(String[] args) {
Outer outer = new Outer();
outer.printHello();
}
}
静态嵌套类是在外部类中定义的静态类,可以在外部类中直接访问,不需要先创建外部类实例。以下是一个基本示例:
public class Outer {
private static int x = 10;
public static class Inner {
public void printX() {
System.out.println(x);
}
}
public static void main(String[] args) {
Outer.Inner inner = new Outer.Inner();
inner.printX(); // 输出10
}
}
以上就是Java中的内部类的四种类型。内部类可以让程序员更好地组织代码,并且可以访问外部类的所有成员。在使用内部类时,需要注意内部类和外部类之间的访问权限,以及内部类的作用域。