abstract(抽象)修飾符,可以修飾類和方法 1,abstract修飾類,會(huì)使這個(gè)類成為一個(gè)抽象類,這個(gè)類將不能生成對(duì)象實(shí)例,但可以做為對(duì)象變量聲明的類型,也就是編譯時(shí)類型,抽象類就像當(dāng)于一類的半成品,需要子類繼承并覆蓋其中的抽象方法。 2,abstract修飾方法,會(huì)使這個(gè)方法變成抽象方法,也就是只有聲明(定義)而沒(méi)有實(shí)現(xiàn),實(shí)現(xiàn)部分以";"代替。需要子類繼承實(shí)現(xiàn)(覆蓋)。 注意:有抽象方法的類一定是抽象類。但是抽象類中不一定都是抽象方法,也可以全是具體方法。 abstract修飾符在修飾類時(shí)必須放在類名前。 abstract修飾方法就是要求其子類覆蓋(實(shí)現(xiàn))這個(gè)方法。調(diào)用時(shí)可以以多態(tài)方式調(diào)用子類覆蓋(實(shí)現(xiàn))后的方法,也就是說(shuō)抽象方法必須在其子類中實(shí)現(xiàn),除非子類本身也是抽象類。 注意:父類是抽象類,其中有抽象方法,那么子類繼承父類,并把父類中的所有抽象方法都實(shí)現(xiàn)(覆蓋)了,子類才有創(chuàng)建對(duì)象的實(shí)例的能力,否則子類也必須是抽象類。抽象類中可以有構(gòu)造方法,是子類在構(gòu)造子類對(duì)象時(shí)需要調(diào)用的父類(抽象類)的構(gòu)造方法。 舉個(gè)簡(jiǎn)單的例子下面有一個(gè)抽象類 abstract class E{ public abstract void show();//public abstract 可以省略 } 然后其它類如果繼承它通常為了實(shí)現(xiàn)它里面的方法 class F extends E{ void show(){ //寫(xiě)具體實(shí)現(xiàn)的代碼 } } 最后再主方法里面定義一個(gè)父類引用指向子類對(duì)象,就會(huì)發(fā)生多態(tài)現(xiàn)象,比如 E e=new F(); e.show(); 實(shí)際調(diào)用了子類里面的show()方法 |
|
來(lái)自: DOC問(wèn)文館 > 《java》