Polymorphism、Abstract Class、Extends,面向對象特性與面向對象的高級知識部分

package cn.csdn.abstracts;

//這個類用來測試抽象類的用法及其特點
public class Test3_Abstract {
	public static void main(String[] args) {
		//創建子類對象,測試使用類
		//The value of the local variable a/a2/a3 is not used
		Advance a = new Advance();
		a.eat();
		a.sleep();
		
//		//創建父類對象測試,普通父類
//		Advances a2 = new Advances();
//		a2.eat();
//		a2.sleep();
		
		//創建多態對象測試
		//編譯看左邊,執行看右邊:調用父類裏的成員,執行子類裏經過覆寫的方法體
		//創建父類對象,通過實例化子類對象的向上轉型,抽象類/特殊類
		Advances a3 = new Advance();
		a3.eat();
		a3.sleep();
		
		/**Advance.eat();
		  
		   Cannot make a static reference to the non-static method eat() from the type Advance
		        從這句話你能看出來什麼,普通類,或者只要它是一個類,那以這個類調用的方式,是靜態的。或者類本身,不管它是什麼類,是靜態的。
           static修飾,隨類的加載而加載而存在,然而,非static修飾,需先通過創建實例化對象,才能分配到內存空間,才能存在,才能被
                     實質性地以這個內存空間(其地址值)進行調用。*/
	}
}

//把共性功能向上提取,形成父類
abstract class Advances{
	/**	先不做程序設計:   抽象類      ==  程序設計(的結果)  */
	//抽象類的演化過程:
	abstract public void eat();
	
	public abstract void sleep();
}

//創建一個普通類,關鍵字class,強制繼承父類,擁有父類
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章