在Java中,嵌套类是指定义在另一个类内部的类。嵌套类可以分为静态嵌套类(static nested class)、成员嵌套类(member inner class)、局部嵌套类(local inner class)和匿名类(anonymous class)四种类型。
静态嵌套类
静态嵌套类是定义在另一个类内部的静态类,可以直接通过外部类名访问。静态嵌套类与普通类一样,可以拥有自己的成员变量和方法。
// www.javascriptcn.com code example
public class OuterClass {
static class StaticNestedClass {
public void display() {
System.out.println("This is a static nested class");
}
}
public static void main(String[] args) {
OuterClass.StaticNestedClass nested = new OuterClass.StaticNestedClass();
nested.display();
}
}成员嵌套类
成员嵌套类是定义在另一个类内部的非静态类,需要通过外部类的实例来访问。成员嵌套类可以访问外部类的实例变量和方法。
// www.javascriptcn.com code example
public class OuterClass {
class MemberInnerClass {
public void display() {
System.out.println("This is a member inner class");
}
}
public static void main(String[] args) {
OuterClass outer = new OuterClass();
OuterClass.MemberInnerClass inner = outer.new MemberInnerClass();
inner.display();
}
}局部嵌套类
局部嵌套类是定义在方法内部的类,只能在该方法内部访问。局部嵌套类通常用于解决某个方法的特定问题。
// www.javascriptcn.com code example
public class OuterClass {
public void display() {
class LocalInnerClass {
public void print() {
System.out.println("This is a local inner class");
}
}
LocalInnerClass inner = new LocalInnerClass();
inner.print();
}
public static void main(String[] args) {
OuterClass outer = new OuterClass();
outer.display();
}
}匿名类
匿名类是一种没有类名的局部内部类,通常用于创建只需使用一次的类。匿名类通常用于实现接口或抽象类的方法。
// www.javascriptcn.com code example
public class OuterClass {
public void display() {
Runnable runnable = new Runnable() {
@Override
public void run() {
System.out.println("This is an anonymous class");
}
};
new Thread(runnable).start();
}
public static void main(String[] args) {
OuterClass outer = new OuterClass();
outer.display();
}
}Java的嵌套类提供了一种灵活的方式来组织代码,可以根据需要选择合适的嵌套类类型来实现特定的功能。在实际开发中,根据需求选择合适的嵌套类类型可以提高代码的可读性和灵活性。