JAVA面向物件之內部類
阿新 • • 發佈:2018-12-26
內部類
在一個類的內部宣告的類,稱為內部類(也叫內嵌類)。內部類只能在包含它的類中使用,同時它可以看作是該包含類的一段特殊程式碼,可以直接使用該包含類的變數和方法。
內部類編譯後也會形成一個單獨的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程式設計中,我們會經常用到內部匿名類。