1. 程式人生 > >一隻不開竅的笨鳥

一隻不開竅的笨鳥


在Java中,內部類分為很多種,主要有一下4種:靜態內部類,成員內部類,區域性內部類,匿名內部類。

//靜態內部類
class OuterClass {
static class InnerClass {}

}

靜態內部類是指被宣告為static的內部類,它可以不依賴於外部類例項而被例項化,而通常的內部類需要在外部類例項化後才能例項化。靜態內部類不能與尾部類有相同的名字,不能訪問外部類的普通成員變數,只能訪問外部類中的靜態成員和靜態方法(包括私有型別).

//成員內部類
class OuterClass {
class InnerClass {}

}

成員內部類為非靜態內部類,它可以自由的引用外部類的屬性和方法,無論這些屬性和方法是靜態的還是非靜態的。但是它與一個例項繫結在了一起,不可以定義靜態的屬性和方法。只有在外部的類被例項化後,這個內部類才能例項化。需要注意的是,非靜態內部類不能有靜態成員。

//區域性內部類
class outerClass {
public void memberFunction() {
class innerClass {}

}

區域性內部類是定義在一個程式碼庫內的類,它的作用範圍為所在的程式碼塊,是內部類中最少使用到的一種型別。區域性內部類像區域性變數一樣,不能被public、protected、private以及static修飾,只能訪問方法中定義為final型別的區域性變數。

//匿名內部類
public class MyFrame extends Frame {
public MyFrame() {
addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent e) {
dispose();
System.exit(0);
}
});
}
}