1.抽象類可以有構(gòu)造函數(shù)嗎?
答:可以
public?abstract?class?AbstractTest?{?AbstractTest(){?}}
2.抽象類的構(gòu)造函數(shù)的作用?
答:初始化抽象類內(nèi)部聲明的通用變量,并被各種實現(xiàn)使用。
以下例子是抽象類中初始化了id,在默認情況下,在調(diào)用子類的構(gòu)造函數(shù)前是先要調(diào)用基類的構(gòu)造函數(shù)的,這一點和非抽象的類一樣。
public?abstract?class?AbstractTest?{?private?String?id;??AbstractTest(){?this.id?=?UUID.randomUUID().toString().replace("-",?"");?}?public?static?void?main(String[]?args){?System.out.println("test");?}?public?String?getId()?{?return?id;?}?public?void?setId(String?id)?{?this.id?=?id;?}}
繼承類使用:
public?class?AbstractDemo?extends?AbstractTest{?public?static?void?main(String[]?args){?AbstractDemo?demo?=?new?AbstractDemo();?System.out.println(JSON.toJSonString(demo));?}}//輸出結(jié)果:{"id":"1b9190dbf7684fbe980347c2a0c6cb27"}
3.抽象類中是否可以有靜態(tài)的main方法?
答:可以
抽象類沒有對象概念所以不能被實例化.但可以定義屬性方法,其中屬性方法都可以是靜態(tài)的.靜態(tài)的意義其實就是在棧內(nèi)存中只有一個,所以該成員也會先于對象出現(xiàn)在內(nèi)存中,所以靜態(tài)并沒有違反抽象的原則.抽象類中可以定義靜態(tài)成員.
public?abstract?class?AbstractTest?{?public?static?void?main(String[]?args){?System.out.println("test");?}}
4.抽象類關(guān)鍵字abstract不可以和哪些關(guān)鍵字共存?
答:private、final、static
private:abstract是要子類去實現(xiàn)這個方法,而private修飾子類根本無法得到父類這個方法,互相矛盾。
final:被final修飾的類不能有子類,因為抽象方法后期需要被子類重寫,一旦加final無法重寫。
static:使用static我們就可以直接通過類名訪問抽象方法,由于抽象方法沒有方法體,所以無法實現(xiàn)。
5.抽象類中是否可以不定義抽象方法?
答:可以,這么做的目的是不讓其他類創(chuàng)建本類對象,交給子類完成。
6.Java抽象類可以實現(xiàn)接口嗎?它們需要實現(xiàn)所有的方法嗎?
答:可以。因為它們是抽象的,所以它們不需要實現(xiàn)所有的方法。
public?interface?InterfaceTest?{?public?abstract?void?abstractTest();?}public?abstract?class?AbstractTest?implements?InterfaceTest{? //可以不用實現(xiàn)方法?}
以上就是天津卓眾教育java培訓機構(gòu)的小編針對“編程基礎(chǔ)入門:java抽象類練習題”的內(nèi)容進行的回答,希望對大家有所幫助,如有疑問,請在線咨詢,有專業(yè)老師隨時為你服務(wù)。