Java中的外部類指的是在一個(gè)java文件中定義的頂層類,該類可以被其他java文件中的類使用或繼承。在Java中,每個(gè)java源文件只能定義一個(gè)外部類,且該類的名稱必須與文件名相同。
//Example.java文件中的外部類 public class Example { //外部類的成員變量和方法 }
一個(gè)java文件中可以同時(shí)定義多個(gè)類,包括外部類和內(nèi)部類。內(nèi)部類可以訪問外部類的成員變量和方法,而外部類不能直接訪問內(nèi)部類的成員變量和方法。
//Example.java文件中的外部類和內(nèi)部類 public class Example { //外部類成員變量和方法 //內(nèi)部類 class InnerClass { //內(nèi)部類成員變量和方法 //內(nèi)部類訪問外部類成員變量和方法 public void accessOuter() { //通過Example.this訪問外部類的成員變量和方法 } } }
外部類和內(nèi)部類的訪問修飾符一樣,都可以使用public、protected、default和private,不同的是內(nèi)部類還可以使用static修飾。
//Example.java文件中的靜態(tài)內(nèi)部類 public class Example { //外部類成員變量和方法 //靜態(tài)內(nèi)部類 static class StaticInnerClass { //內(nèi)部類成員變量和方法 } }
外部類和內(nèi)部類還可以互相訪問對(duì)方的私有成員,因?yàn)樗鼈冊(cè)谕粋€(gè)文件中編譯。
//Example.java文件中的外部類和內(nèi)部類訪問私有成員 public class Example { private int outerPrivate = 1; class InnerClass { private int innerPrivate = 2; public void accessOuterPrivate() { //內(nèi)部類訪問外部類的私有成員 int outer = outerPrivate; } } public void accessInnerPrivate() { InnerClass inner = new InnerClass(); //外部類訪問內(nèi)部類的私有成員 int inner = inner.innerPrivate; } }