Java中的外部类指的是在一个java文件中定义的顶层类,该类可以被其他java文件中的类使用或继承。在Java中,每个java源文件只能定义一个外部类,且该类的名称必须与文件名相同。
//Example.java文件中的外部类 public class Example { //外部类的成员变量和方法 }
一个java文件中可以同时定义多个类,包括外部类和内部类。内部类可以访问外部类的成员变量和方法,而外部类不能直接访问内部类的成员变量和方法。
//Example.java文件中的外部类和内部类 public class Example { //外部类成员变量和方法 //内部类 class InnerClass { //内部类成员变量和方法 //内部类访问外部类成员变量和方法 public void accessOuter() { //通过Example.this访问外部类的成员变量和方法 } } }
外部类和内部类的访问修饰符一样,都可以使用public、protected、default和private,不同的是内部类还可以使用static修饰。
//Example.java文件中的静态内部类 public class Example { //外部类成员变量和方法 //静态内部类 static class StaticInnerClass { //内部类成员变量和方法 } }
外部类和内部类还可以互相访问对方的私有成员,因为它们在同一个文件中编译。
//Example.java文件中的外部类和内部类访问私有成员 public class Example { private int outerPrivate = 1; class InnerClass { private int innerPrivate = 2; public void accessOuterPrivate() { //内部类访问外部类的私有成员 int outer = outerPrivate; } } public void accessInnerPrivate() { InnerClass inner = new InnerClass(); //外部类访问内部类的私有成员 int inner = inner.innerPrivate; } }