Java是一種面向對象的編程語言,支持內部類和外部類的定義。內部類可以訪問外部類的私有屬性和方法,而外部類不能訪問內部類的私有屬性和方法。Java中調用內部類和外部類的方式略有不同,下面將詳細介紹。
在Java中,內部類有四種類型:成員內部類、局部內部類、匿名內部類和靜態內部類。其中,成員內部類和靜態內部類可以被外部類直接調用,而局部內部類和匿名內部類只能被定義在方法中,外部類無法直接調用。
public class OuterClass { private int outerData = 10; public static int staticData = 20; //成員內部類 public class InnerClass { private int innerData = 5; public void display() { System.out.println("In inner class: outerData = " + outerData + " staticData = " + staticData + " innerData = " + innerData); } } //靜態內部類 public static class StaticInnerClass { public void display() { System.out.println("In static inner class: staticData = " + staticData); } } public void test() { //局部內部類 class LocalInnerClass { private int localData = 3; public void display() { System.out.println("In local inner class: outerData = " + outerData + " staticData = " + staticData + " localData = " + localData); } } //匿名內部類 Runnable r = new Runnable() { public void run() { System.out.println("In anonymous inner class: staticData = " + staticData); } }; //訪問成員內部類 InnerClass ic = new InnerClass(); ic.display(); //訪問靜態內部類 StaticInnerClass sic = new StaticInnerClass(); sic.display(); //訪問局部內部類 LocalInnerClass lic = new LocalInnerClass(); lic.display(); //訪問匿名內部類 r.run(); } public static void main(String[] args) { OuterClass oc = new OuterClass(); oc.test(); } }
上述代碼演示了Java中調用四種不同類型的內部類的方法。成員內部類和靜態內部類可以使用外部類實例直接調用,而局部內部類和匿名內部類只能在方法中使用。在成員內部類中,可以訪問外部類的私有屬性和方法,而靜態內部類只能訪問外部類的靜態屬性和方法。
在Java中,外部類不能直接調用內部類的私有屬性和方法。要訪問內部類的私有屬性和方法,需要在內部類中使用外部類的實例來調用。例如:
public class OuterClass { private int outerData = 10; public void test() { //成員內部類 class InnerClass { private int innerData = 5; public void display() { System.out.println("In inner class: innerData = " + innerData); } } InnerClass ic = new InnerClass(); ic.display(); //調用內部類的私有屬性和方法 OuterClass oc = new OuterClass(); System.out.println("In outer class: outerData = " + oc.outerData); } public static void main(String[] args) { OuterClass oc = new OuterClass(); oc.test(); } }
上述代碼演示了在外部類中調用內部類的私有屬性和方法的方法。在內部類中定義一個外部類的引用,可以用來訪問外部類的私有屬性和方法。
上一篇java起源和應用
下一篇css圖片輪播懶人之家