欢迎访问宙启技术站
智能推送

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();