Java中的內部類和外部類是面向對象程序設計中的兩個重要概念。內部類指的是一個類中定義的另一個類,而外部類則是獨立存在的一個類。下面我們來具體分析它們之間的區別。
首先,內部類和外部類的作用范圍不同。內部類作為外部類的成員,可以訪問它的私有成員和方法。而外部類無法訪問內部類的私有成員和方法,只能通過內部類提供的接口來訪問。
public class OuterClass { private int x = 10; public class InnerClass { private int y = 20; public int getSum() { return x + y; } } public void printSum() { InnerClass inner = new InnerClass(); System.out.println(inner.getSum()); } } OuterClass outer = new OuterClass(); outer.printSum(); //輸出30
以上代碼中,內部類InnerClass可以訪問外部類OuterClass的私有成員x,從而計算出x和它自己的y的和。而外部類OuterClass只能通過調用內部類InnerClass提供的接口去獲得這個和。
其次,內部類可以擁有不同的訪問權限。內部類可以被聲明為public、protected、package以及private等四種訪問權限中的任何一種,而外部類只能被聲明為public或默認訪問權限(沒有加修飾符)。
public class OuterClass { private int x = 10; public class InnerClass { private int y = 20; //...some methods } private class PrivateInnerClass { private int z = 30; //...some methods } //...some methods } OuterClass.InnerClass inner = new OuterClass.InnerClass(); //在外部類外部訪問內部類 OuterClass.PrivateInnerClass privateInner = new OuterClass.PrivateInnerClass(); //只能在外部類內部訪問私有內部類
以上代碼中的InnerClass是public訪問權限的,可以在外部類外部進行訪問。而PrivateInnerClass是private訪問權限的,只能在外部類內部進行訪問。
總之,內部類和外部類在使用時需要注意其作用范圍和訪問權限的不同。但是這些差異可以讓我們更好地利用Java的面向對象特性,編寫更加靈活可擴展的程序。
上一篇css親子選擇器