📅  最后修改于: 2023-12-03 14:42:18.290000             🧑  作者: Mango
在 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
关键字或成员名称来引用外部类中的成员。在外部类之外访问内部类时,我们需要提供一个公共的访问方法来获取内部类的实例。