Java 内部类

Java 内部类

在 Java 中,也可以嵌套类(类中的类)。嵌套类的目的是将属于一起的类进行分组,这会使您的代码更具可读性和可维护性。

如需访问内部类,先创建外部类的对象,然后再创建内部类的对象:

实例

class OuterClass {
 int x = 10;
 class InnerClass {
 int y = 5;
 }
}
public class Main {
 public static void main(String[] args) {
 OuterClass myOuter = new OuterClass();
 OuterClass.InnerClass myInner = myOuter.new InnerClass();
 System.out.println(myInner.y + myOuter.x);
 }
}
// 输出 15 (5 + 10)

亲自试一试

私有内部类

与"常规"类不同,内部类可以是 privateprotected。如果您不希望外部对象访问内部类,请将该类声明为 private:

实例

class OuterClass {
 int x = 10;
 private class InnerClass {
 int y = 5;
 }
}
public class Main {
 public static void main(String[] args) {
 OuterClass myOuter = new OuterClass();
 OuterClass.InnerClass myInner = myOuter.new InnerClass();
 System.out.println(myInner.y + myOuter.x);
 }
}

如果尝试从外部类访问私有内部类,则会发生错误:

Main.java:13: error: OuterClass.InnerClass has private access in OuterClass
 OuterClass.InnerClass myInner = myOuter.new InnerClass();
 ^

亲自试一试

静态内部类

内部类也可以是 static,这意味着您可以在不创建外部类的对象的情况下访问它:

实例

class OuterClass {
 int x = 10;
 static class InnerClass {
 int y = 5;
 }
}
public class Main {
 public static void main(String[] args) {
 OuterClass.InnerClass myInner = new OuterClass.InnerClass();
 System.out.println(myInner.y);
 }
}
// 输出 5

亲自试一试

注意:就像 static 属性和方法一样,static 内部类不能访问外部类的成员。

从内部类访问外部类

内部类的优点之一是它们可以访问外部类的属性和方法:

实例

class OuterClass {
 int x = 10;
 class InnerClass {
 public int myInnerMethod() {
 return x;
 }
 }
}
public class Main {
 public static void main(String[] args) {
 OuterClass myOuter = new OuterClass();
 OuterClass.InnerClass myInner = myOuter.new InnerClass();
 System.out.println(myInner.myInnerMethod());
 }
}
// 输出 10

亲自试一试

(追記) (追記ここまで)

AltStyle によって変換されたページ (->オリジナル) /