1. 程式人生 > >為什麼需要內部類,內部類的作用

為什麼需要內部類,內部類的作用

可以將一個類的定義放在另一個類的定義內部,這就是內部類。內部類是一鍾非常有用的特性,因為它允許程式設計師把一些邏輯相關的類組織在一起,並控制內部類的可視性。

在最初,內部類看起來就像是一種內部隱藏機制:將類置於其他類的內部。但是,內部類遠不止如此,它瞭解外圍類,並能與之通訊,而且你用內部類寫出的程式碼優雅而清晰。

內部類的程式碼操作建立它的外圍類的物件,所以可以認為內部類提供了某種進入外圍類的視窗。一般來說,內部類繼承某個類或者實現某個介面。每個內部類都能獨立地繼承一個介面的實現,所以無論外圍類是否已經繼承了某個介面的實現,對於內部類都是沒有影響的。

考慮這樣一種情形:必須在一個類中以某種方式實現兩個介面。由於介面的靈活性,你有兩種選擇:使用單一類,或者實現內部類。

兩個介面為:

interface A{}

interface B{}

我們可以選擇單一類:

class X implements A, B{}

或者內部類:

class Y implements A{

B makeB(){

return new B() {};

}

         }

         然而,如果擁有的是抽象類或者是具體的類,而不是介面呢?我們知道,類只能繼承一個類,這個時候就只能使用內部類才能實現多重繼承了。

        class A {}

        abstract B {}

        class C extends A{

                 B makeB() {

return new B() { };

}

 }

         public  class  E{

static void takesA( A a){ }

static void takesB(B b){ }

                 public static void main(String [] args ){

C c = new C();

takesA(c);

                       takesB(c,makeB);

}

}

也就是說,內部類實現了“多重繼承”,內部類允許繼承多個非介面型別(類或者抽象類)。