Java内部類的分類和用法
- 一、靜态内部類
- 二、成員内部類
- 三、局部内部類
- 四、匿名内部類
内部類主要有四種:1.靜态内部類 2.成員内部類 3.局部内部類 4.匿名内部類
一、靜态内部類
定義:被聲明為static的内部類。
特點:
- 可以不依賴于外部類執行個體而被執行個體化(通常的内部類需要再外部類執行個體化後才能執行個體化)
- 不能與外部類名字相同
- 不能通路外部類的普通成員變量,隻能通路外部類中的靜态成員和靜态方法(即使是私有類型也可以通路)
class outerClass{
static class innerClass{} //靜态内部類
}
二、成員内部類
定義:就是一般的内部類(靜态内部類去掉static就變成了成員内部類)
特點:
- 隻有外部類執行個體化後,該内部類才能被執行個體化
- 不能有靜态成員
- 可自由引用外部類的屬性和方法(包括靜态和非靜态)
class outerClass{
class innerClass{} //成員内部類
}
三、局部内部類
定義:一個代碼塊内的類,作用範圍就是該代碼塊(最少用到的内部類)
特點:類似局部變量,不能被public,protected,private,static修飾,隻能通路方法中定義為final類型的局部變量
class outerClass{
public void memberFun(){
class innerClass{} //局部内部類---定義在一個代碼塊中
}
}
四、匿名内部類
定義:沒有類名的内部類
特點:
- 不使用關鍵字:class、extends、implements
- 沒有構造方法
- 必須繼承其他類/實作其他接口
- 代碼簡潔緊湊,但是可讀性差
public class MyFrame extends Frame{ //外部類
public MyFrame(){
addWindowListener(new WindowAdapter(){ //匿名内部類
public void windowClosing(WindowEvent e)
dispose();
System.exit(0);
}
});
}
}