📜  非静态内部类的实例 - Java (1)

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

非静态内部类的实例 - Java

在Java中,非静态内部类是指一个类被定义在另一个类的内部,且非静态。它可以访问外部类的成员变量和方法,并且可以实例化多个不同的对象。本文将介绍非静态内部类实例化的方法以及如何访问外部类的成员。

非静态内部类的实例化

非静态内部类的实例化需要使用外部类的实例来创建。下面是一个例子:

public class OuterClass {
    private int outerVar = 100;

    public class InnerClass {
        public void display() {
            System.out.println("Outer variable value: " + outerVar);
        }
    }

    public void createInnerClass() {
        InnerClass inner = new InnerClass();
        inner.display();
    }

    public static void main(String[] args) {
        OuterClass outer = new OuterClass();
        outer.createInnerClass();
    }
}

在这个例子中,我们首先定义了一个外部类OuterClass,然后在OuterClass内部定义了一个非静态内部类InnerClassInnerClass可以访问外部类的私有成员变量outerVar。我们在createInnerClass()方法中实例化了InnerClass,然后调用它的display()方法,输出外部变量outerVar的值。

最后,在main()方法中,我们实例化了OuterClass,然后调用它的createInnerClass()方法来创建内部类的实例。

如何访问外部类的成员

在非静态内部类中,我们可以使用外部类的实例来访问它的成员变量和方法。在上面的例子中,我们通过访问外部类的成员变量outerVar来演示了这一点。如果我们想要在内部类中调用外部类的方法,可以使用以下语法:

OuterClass.this.outerMethod();

其中,OuterClass.this表示外部类的实例,outerMethod()表示外部类的方法名。示例如下:

public class OuterClass {
    private int outerVar = 100;

    public void outerMethod() {
        System.out.println("This is outer method");
    }

    public class InnerClass {
        public void innerMethod() {
            System.out.println("This is inner method");
            OuterClass.this.outerMethod();
        }
    }

    public static void main(String[] args) {
        OuterClass outer = new OuterClass();
        OuterClass.InnerClass inner = outer.new InnerClass();
        inner.innerMethod();
    }
}

在这个例子中,我们在InnerClass中定义了一个方法innerMethod(),然后在方法内部调用了外部类的方法outerMethod()

总结

本文介绍了非静态内部类的实例化方法和如何访问外部类的成员变量和方法。了解这些内容可以帮助您更好地理解Java中的内部类机制。