Java是一種面向?qū)ο蟮木幊陶Z言,它支持內(nèi)部類和外部類。內(nèi)部類是定義在另一個類中的類,外部類則是獨立的類。下面我們詳細(xì)介紹一下Java的內(nèi)部類和外部類:
1. 內(nèi)部類
public class OuterClass { int num = 10; private class InnerClass { public void print() { System.out.println("This is an inner class."); } } public void displayInner() { InnerClass inner = new InnerClass(); inner.print(); } } //創(chuàng)建外部類對象 OuterClass out = new OuterClass(); //調(diào)用外部類方法displayInner() out.displayInner();
上述代碼中,內(nèi)部類InnerClass定義在外部類OuterClass中。在OuterClass的方法displayInner()中,我們創(chuàng)建InnerClass的對象inner并調(diào)用它的方法print()。因為內(nèi)部類可以訪問外部類的成員變量和方法,所以在print()方法中可以訪問num這個成員變量。
2. 外部類
public class OuterClass { int num = 10; static class StaticNestedClass { public void display() { System.out.println("This is a static nested class."); } } } //創(chuàng)建靜態(tài)內(nèi)部類對象 OuterClass.StaticNestedClass nested = new OuterClass.StaticNestedClass(); //調(diào)用靜態(tài)內(nèi)部類方法display() nested.display();
上述代碼中,外部類OuterClass中定義了一個靜態(tài)內(nèi)部類StaticNestedClass,在main()方法中我們創(chuàng)建StaticNestedClass的對象nested并調(diào)用它的方法display()。需要注意的是,因為StaticNestedClass是靜態(tài)的,所以創(chuàng)建它的對象時不需要先創(chuàng)建外部類的對象。
總結(jié):
內(nèi)部類和外部類都可以用來組織和封裝代碼,但它們的作用和用法不同。內(nèi)部類可以訪問外部類的成員和方法,而外部類不能訪問內(nèi)部類的成員和方法。外部類可以調(diào)用內(nèi)部類中的方法,但需要先創(chuàng)建內(nèi)部類的對象。內(nèi)部類有四種類型:成員內(nèi)部類、局部內(nèi)部類、匿名內(nèi)部類和靜態(tài)內(nèi)部類。其中,靜態(tài)內(nèi)部類是最特殊的一種,因為它可以像外部類一樣被訪問和調(diào)用。