1. 程式人生 > >JAVA面向物件之內部類

JAVA面向物件之內部類

內部類

在一個類的內部宣告的類,稱為內部類(也叫內嵌類)。內部類只能在包含它的類中使用,同時它可以看作是該包含類的一段特殊程式碼,可以直接使用該包含類的變數和方法。
內部類編譯後也會形成一個單獨的class,但它附屬於其包含類。建立內部類的物件時會有一個對外部類物件的引用,所以一般只能在非靜態方法裡建立內部類物件。
建立一個外部類Outer,在其非靜態方法中呼叫內部類。

public class Outer {
   int outer = 100;
   //在外部類的方法中建立內部類的物件,並呼叫其方法
   void test() {
      Inner in = new Inner();
      in.dispaly();
   }
   //內部類
public class Inner { void dispaly() { System.out.println("dispaly:outer =" + outer); } } }

從上面程式碼中可以看出,可以把一個類定義在另一個類中,這就是內部類。一般來說使用內部類有如下兩點考慮:
1. 內部類使得程式程式碼更為緊湊,程式更具模組化。
2. 由於內部類被看作類中一段特殊的程式碼,其可以直接呼叫類中的成員,因此在一些複雜的呼叫關係中,使用內部類可以使成員間呼叫更加方便。

內部匿名類

匿名類就是沒有名字的類,是將類和類的方法定義在一個表示式範圍裡。在內部類僅需要使用一次的時候,可以對程式碼進行簡化,比如在《

JAVA面向物件之抽象類和介面》中,我們定義了一個GraphicsCard介面,並且定義了一個AMDGraphicsCard 實現了該介面,如果我們要完成AMDGraphicsCard類所完成的功能且只需要用一次,那麼我們就可以使用內部匿名類。這裡我們定義一個Computer類來演示內部匿名類的使用。

public class Computer {
   public void show(GraphicsCard card) {
      card.dispaly();
   }
   public static void main(String[] args) {
      Computer computer = new
Computer(); //使用內部匿名類 computer.show(new GraphicsCard() { public void dispaly() { System.out.println("AMD顯示卡"); } }); } }

以上就是內部匿名類的使用方式,在GUI程式設計中,我們會經常用到內部匿名類。