📜  Java中的内部类(1)

📅  最后修改于: 2023-12-03 15:31:58.040000             🧑  作者: Mango

Java中的内部类

在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中的内部类的四种类型。内部类可以让程序员更好地组织代码,并且可以访问外部类的所有成员。在使用内部类时,需要注意内部类和外部类之间的访问权限,以及内部类的作用域。