概念:只有方法的宣告,沒有方法的實現。或者說是沒有方法體的的特殊方法。
什麼時候使用抽象方法呢?
在程式設計中,有時候只需宣告類的功能,而不必指出其實現細節時,就可以使用抽象方法。
格式
[修飾符]注:空方法有方法體,但方法體裡沒有內容。而抽象方法只有方法的宣告,沒有方法體。並用abstract(不能省略)修飾,如abstract
《方法返回型別》 方法名(引數列表);
如: public abstract int getint();
public void show(){} //是乙個空方法
public abstract void show(); //是乙個抽象方法
概念:用abstract 修飾的類稱為抽象類,抽象類是它所有子類共同屬性的集合,是包含乙個或者多個抽象方法的類。
如果只想將乙個類作為派生其他類的基類,而不作為想使用其特定例項的類,就可以使用抽象類。通常把通用的域和方法(不管是否抽象)放在抽象類中,通過它派生子類來實現其抽象方法定義格式
[修飾符]抽象類的特點:abstract
class 類名
抽象類的構造器:抽象類既然不能建立物件,那麼定義抽象類的構造器有什麼作用呢?
通常將乙個類中的例項域都定義為private型別,方法定義為public。抽象類派生出的子類並不能訪問其抽象父類私有的例項域,此時就可以通過子類的構造器呼叫父類的構造器來初始化父類私有的例項域
//class animal //error:animal不是抽象的,並且未覆蓋animal中的抽象方法eat();
//abstract final class animal //error:非法的修飾符組合:abstract和final
abstract class animal
public animal(string name)
//抽象方法
//public abstract void eat(){} //error:抽象方法不能有主體
//public void eat(); //error:缺少方法主體,或宣告抽象
public abstract void eat();
public abstract void sleep();
//通用的方法
public string getname()
}//該類實現了抽象父類的所有抽象方法,所以該類可以是非抽象類
class cat extends animal
public cat(string name)
public void eat()
public void sleep() }
class dog extends animal
public void sleep()
public void playgame() }
//class pig extends animal //error:pig不是抽象的,並且未覆蓋animal中的抽象方法
abstract class pig extends animal
}
class abstractdemo
}}
執行結果
多型的其它實現方式
返回目錄
java抽象類抽象方法
抽象類 使用abstract關鍵字修飾的class,稱為抽象類 1 抽象類無法例項化 抽象方法 使用abstract關鍵字修飾的方法且沒有實現 有宣告無實現 稱為抽象方法 1 eg public abstract void method 2 沒有 3 抽象方法需要定義在抽象類中 抽象類和抽象方法 1...
java抽象類和抽象方法
抽象類就是不能使用new方法進行例項化的類,即沒有具體例項物件的類。抽象類有點類似 模板 的作用,目的是根據其格式來建立和修改新的類。物件不能由抽象類直接建立,只可以通過抽象類派生出新的子類,再由其子類來建立物件。當乙個類被宣告為抽象類時,要在這個類前面加上修飾符abstract。在抽象類中的成員方...
java抽象類和抽象方法
抽象類就是不能使用 new方法進行例項化的類,即沒有具體例項物件的類。抽象類有點類似 模板 的作用,目的是根據其格式來建立和修改新的類。物件不能由抽象類直接建立,只可以通過抽象類派生出新的子類,再由其子類來建立物件。當乙個類被宣告為抽象類時,要在這個類前面加上修飾符 abstract 在抽象類中的成...