abstract java是什么,讓我們一起了解一下?
1.abstract是修飾類,會讓它成為一個抽象類,而這個類將不能生成對象實例,但可以做為對象變量聲明的類型,也就是編譯時類型,抽象類就像當于一類的半成品,需要子類繼承并覆蓋其中的抽象方法。
2.abstract是修飾方法,會使這個方法變成抽象方法,也就是只有聲明(定義)而沒有實現(xiàn),實現(xiàn)部分以";"代替。需要子類繼承實現(xiàn)(覆蓋)。
注意:有抽象方法的類一定是抽象類。但是抽象類中不一定都是抽象方法,也可以全是具體方法。
1、那么問題來了,什么是抽象類?
1.類和類之間如果具有相同的特征,將這些共同的特征提取出來,形成的就是抽象類。
2.類本身是不存在的,所以抽象類無法實例化對象。3.類到對象是實例化,對象到類是抽象。
他的測試代碼是:
public?class?Test public?static?void?main(String[]?args){ Animal?a1=new?Animal();//此行報錯 //抽象類Animal abstract?class?Animal?{
2、為什么abstract修飾符在修飾類時必須放在類名前?因為abstract修飾方法就是要求其子類覆蓋(實現(xiàn))這個方法。調(diào)用時可以以多態(tài)方式調(diào)用子類覆蓋(實現(xiàn))后的方法,也就是說抽象方法必須在其子類中實現(xiàn),除非子類本身也是抽象類。注意:父類是抽象類,其中有抽象方法,那么子類繼承父類,并把父類中的所有抽象方法都實現(xiàn)(覆蓋)了,子類才有創(chuàng)建對象的實例的能力,否則子類也必須是抽象類。抽象類中可以有構(gòu)造方法,是子類在構(gòu)造子類對象時需要調(diào)用的父類(抽象類)的構(gòu)造方法。
舉個簡單的例子下面有一個抽象類:
abstract class E{public abstract void show();//public abstract 可以省略}然后其它類如果繼承它通常為了實現(xiàn)它里面的方法
class F extends E{void show(){//寫具體實現(xiàn)的代碼}}最后再主方法里面定義一個父類引用指向子類對象,就會發(fā)生多態(tài)現(xiàn)象,比如E e=new F();e.show();實際調(diào)用了子類里面的show()方法。
以上就是小編今天的分享了,希望可以幫助到大家。