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,強制繼承父類,擁有父類
Polymorphism、Abstract Class、Extends,面向對象特性與面向對象的高級知識部分
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.