智漁課堂官方免費教程十二:Java基礎之內部類

內部類

在一個類的內部或方法的內部聲明的類,叫做內部類。
語法格式:[訪問修飾符]  [static]  class 類名{}
可以簡單的把內部類理解成一個變量,只不過這個變量的數據類型是class,使用時需要創建對象後再使用。

分類:

        成員內部類:直接聲明在類中的內部類(同成員變量)
局部內部類:生命在方法中的內部類(同局部變量)
靜態內部類:使用static修飾的內部類(同靜態變量)
        匿名內部類:沒有名字的內部類
匿名內部類的語法格式:new 類名/抽象類名/接口名(){ // 重寫方法 }

實例:
/**
 * 國家類:演示內部類的使用
 * @author 學霸聯盟 - 趙燦
 */
class Country {
	// 聲明一個公共的字符串類型的成員變量(屬性)president(總統)
	public String president;

	// 聲明一個公共的成員內部類City(城市)
	// 注意:這裏不是方法,方法在名稱後面要有小括號
	public class City {
		// 聲明一個公共的String類型的province(市長)
		public String province = "張三";
		
		//非靜態內部類中不能使用static聲明成員
		public void method(){
			System.out.println("非靜態內部類的非靜態方法");
		}
	}

	/*
	 * 創建一個公共的沒有返回值的方法promote(升職)
	 * 因爲變量province屬於City類,所以要使用變量province,
	 * 需要先創建City類的對象,然後用City類的對象才能調用province屬性
	 */
	public void promote() {
		// 創建Family對象f
		City city = new City();
		// 將對象f的householder屬性值賦值給president屬性
		// 執行後president的值也是“張三”
		president = city.province;
		
		//聲明一個局部內部類,只能在該方法的內部使用,外部無法使用
		class localInnerClass{ }
	}
	//靜態內部類
	public static class Province{
		public static void staticMethod(){
			System.out.println("靜態內部類的靜態方法");
		}
		public void method(){
			System.out.println("靜態內部類的非靜態方法");
		}
	}
}
/**
 * 測試類:測試內部類的使用
 * @author 學霸聯盟 - 趙燦
 */
public class InnerClassDemo{
	public static void main(String[] args) {
		//直接調用靜態內部類的靜態方法
		Country.Province.staticMethod();
		//創建靜態內部類的對象
		Country.Province cp = new Country.Province();
		//只能使用對象調用非靜態方法
		cp.method();
		//創建非靜態內部類的對象時,必須先創建外部類的對象
		Country c = new Country();
		//使用外部類的對象去創建內部類的對象
		Country.City cc = c.new City();
		//調用非靜態內部類的非靜態方法
		cc.method();
	}
}
運行結果:
靜態內部類的靜態方法
靜態內部類的非靜態方法
非靜態內部類的非靜態方法








發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章