📜  java 外部类 - Java (1)

📅  最后修改于: 2023-12-03 14:42:18.290000             🧑  作者: Mango

Java 外部类

在 Java 中,一个类可以嵌套在另一个类中。嵌套在其他类中的类称为内部类。与内部类相对应的是外部类,它是不嵌套在其他类中的Java类。

定义一个外部类

一个外部类可以像传统的Java类一样定义。下面是一个名为 OuterClass 的外部类的例子:

public class OuterClass {

    private String message = "Hello from OuterClass!";

    public void showMessage() {
        System.out.println(message);
    }

}
访问外部类中的成员

在外部类中,我们可以在内部访问外部类中的成员,比如成员变量和方法。我们可以通过 this 关键字或者直接使用成员的名称来引用外部类中的成员,如下所示:

public class OuterClass {

    private String message = "Hello from OuterClass!";

    public void showMessage() {
        System.out.println(message);
    }

    public void showMessageFromInnerClass() {
        InnerClass innerClass = new InnerClass();
        innerClass.showMessageFromOuterClass();
    }

    public class InnerClass {

        public void showMessageFromOuterClass() {
            System.out.println("Accessing message from OuterClass: " + message);
            showMessage();
            System.out.println("Accessing this message from InnerClass: " + this.message);
        }

    }

}

在这个例子中,我们定义了一个名为 InnerClass 的内部类。在 showMessageFromInnerClass 方法中,我们创建了一个新的 InnerClass 对象,并调用了其 showMessageFromOuterClass 方法。在 InnerClass 中,我们可以通过 OuterClass.this 来访问外部类的成员,如 OuterClass.this.message

在外部类之外访问内部类

使用外部类之外的代码访问内部类时,我们需要使用外部类的实例来访问内部类。也就是说,在外部类中,我们需要提供一个公共的访问方法来获取内部类的实例。如下所示:

public class OuterClass {

    private String message = "Hello from OuterClass!";

    public void showMessage() {
        System.out.println(message);
    }

    public InnerClass getInnerClass() {
        return new InnerClass();
    }

    public class InnerClass {

        private String message = "Hello from InnerClass!";

        public void showMessage() {
            System.out.println(message);
            System.out.println(OuterClass.this.message);
        }

    }

}

在这个例子中,我们定义了一个公共的 getInnerClass 方法,用来获取内部类的实例。在外部类之外,我们可以这样使用内部类:

OuterClass outerClass = new OuterClass();
OuterClass.InnerClass innerClass = outerClass.getInnerClass();
innerClass.showMessage();
总结

外部类是指不嵌套在其他类中的Java类。它们可以像传统的Java类一样定义。在外部类中,我们可以使用 this 关键字或成员名称来引用外部类中的成员。在外部类之外访问内部类时,我们需要提供一个公共的访问方法来获取内部类的实例。