Java 类中的类

在Java中,我们可以在一个类中定义另一个类。这被称为嵌套类内部类。嵌套类是一个定义在另一个类中的类,可以访问外部类的成员变量和方法。这种特性使得代码更加模块化和可读性更高。

嵌套类的类型

在Java中,有四种类型的嵌套类:静态成员类(Static Member Class)、非静态成员类(Member Class)、匿名类(Anonymous Class)和局部类(Local Class)。

静态成员类

静态成员类是定义在另一个类中的静态类。它可以通过外部类的名称直接访问,无需实例化外部类。

下面是一个静态成员类的示例代码:

public class OuterClass {
    private static int outerStaticVariable = 5;

    public static class StaticMemberClass {
        public void printOuterStaticVariable() {
            System.out.println("Outer static variable: " + outerStaticVariable);
        }
    }
}

可以通过以下方式访问静态成员类:

OuterClass.StaticMemberClass staticClass = new OuterClass.StaticMemberClass();
staticClass.printOuterStaticVariable();

非静态成员类

非静态成员类,又称为内部类(Inner Class),与静态成员类相比,它不是静态的。非静态成员类可以访问外部类的实例变量和方法。

以下是一个非静态成员类的示例代码:

public class OuterClass {
    private int outerInstanceVariable = 10;

    public class MemberClass {
        public void printOuterInstanceVariable() {
            System.out.println("Outer instance variable: " + outerInstanceVariable);
        }
    }
}

可以通过以下方式访问非静态成员类:

OuterClass outerObject = new OuterClass();
OuterClass.MemberClass memberClass = outerObject.new MemberClass();
memberClass.printOuterInstanceVariable();

匿名类

匿名类是没有名称的局部类,它可以用来创建一个实例,并覆盖某个类或接口的方法。

以下是一个使用匿名类的示例代码:

public interface Greeting {
    void greet();
}

public class OuterClass {
    public void greetUser(Greeting greeting) {
        greeting.greet();
    }

    public void sayHello() {
        greetUser(new Greeting() {
            public void greet() {
                System.out.println("Hello, anonymous class!");
            }
        });
    }
}

在上面的例子中,我们创建了一个匿名类实现了Greeting接口,并在sayHello方法中使用它。

局部类

局部类是定义在代码块中的类,如方法、循环或作用域内。它们仅能在所在的代码块中访问。

以下是一个局部类的示例代码:

public class OuterClass {
    public void printMessage() {
        class LocalClass {
            public void print() {
                System.out.println("Local class printing message");
            }
        }

        LocalClass localClass = new LocalClass();
        localClass.print();
    }
}

可以通过以下方式访问局部类:

OuterClass outerObject = new OuterClass();
outerObject.printMessage();

总结

在本文中,我们介绍了Java类中的类。嵌套类是定义在另一个类中的类,可以访问外部类的成员变量和方法。Java提供了四种类型的嵌套类:静态成员类、非静态成员类、匿名类和局部类。每种类型的嵌套类都有其特定的应用场景和使用方式。通过合理使用嵌套类,我们可以使代码更加模块化、可读性更高,并提高代码的复用性。