一隻不開竅的笨鳥
阿新 • • 發佈:2018-12-26
在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);
}
});
}
}