Java内部类有哪些
发布时间:2023-05-16 02:54:38
Java是一种面向对象的编程语言,它支持不同类型的嵌套类。内部类是一种特殊类型的嵌套类,它定义在另一个类的内部,并且可以访问其外部类的成员变量和方法。Java中内部类可以大致分为四类:成员内部类、局部内部类、匿名内部类、静态内部类。
1. 成员内部类
成员内部类是定义在外部类内部的一个类,它可以访问外部类的成员变量和方法,并且可以被外部类的任何方法访问。对于成员内部类,可以使用外部类对象来创建它的实例,例如:
public class OuterClass {
private int x;
class InnerClass {
void print() {
System.out.println("InnerClass x = " + x);
}
}
}
可以使用以下代码来创建InnerClass的实例:
OuterClass oc = new OuterClass(); OuterClass.InnerClass ic = oc.new InnerClass();
2. 局部内部类
局部内部类是定义在方法内部的类。它只能在该方法内部被访问,并且不能被外部类或其他类访问。对于局部内部类,可以访问该方法的局部变量和参数,但是这些变量必须是final的。例如:
public class OuterClass {
public void print(final int x) {
class InnerClass {
void print() {
System.out.println("InnerClass x = " + x);
}
}
InnerClass ic = new InnerClass();
ic.print();
}
}
3. 匿名内部类
匿名内部类是一种没有名字的局部内部类。它通常用于创建实现某个接口或继承某个类的对象。通常情况下,匿名内部类定义在方法内部或作为另一个类的成员变量。例如:
public interface Printer {
void print();
}
public class OuterClass {
public void print() {
Printer printer = new Printer() {
public void print() {
System.out.println("Hello World!");
}
};
printer.print();
}
}
4. 静态内部类
静态内部类是定义在外部类内部的一个静态类。它不存在对象间的引用关系,可以直接访问外部类的静态成员和方法。对于静态内部类,可以使用其外部类的名称来创建它的实例,例如:
public class OuterClass {
private static int x;
public static class InnerClass {
void print() {
System.out.println("InnerClass x = " + x);
}
}
}
可以使用以下代码来创建InnerClass的实例:
OuterClass.InnerClass ic = new OuterClass.InnerClass();
