更新時間:2020-09-11 16:55:02 來源:動力節(jié)點 瀏覽2437次
1.下面這段代碼的輸出結(jié)果是什么?
ublic?class?Test?{
????public?static?void?main(String[]?args)??{????????new?Circle();
????}
}?
class?Draw?{
?????
????public?Draw(String?type)?{????????System.out.println(type+"?draw?constructor");
????}
}?
class?Shape?{????private?Draw?draw?=?new?Draw("shape");
?????
????public?Shape(){????????System.out.println("shape?constructor");
????}
}?
class?Circle?extends?Shape?{????private?Draw?draw?=?new?Draw("circle");
????public?Circle()?{????????System.out.println("circle?constructor");
????}
}
這道題目主要考察的是類繼承時構(gòu)造器的調(diào)用順序和初始化順序。要記住一點:父類的構(gòu)造器調(diào)用以及初始化過程一定在子類的前面。由于Circle類的父類是Shape類,所以Shape類先進行初始化,然后再執(zhí)行Shape類的構(gòu)造器。接著才是對子類Circle進行初始化,最后執(zhí)行Circle的構(gòu)造器。
2.下面這段代碼的輸出結(jié)果是什么?
public?class?Test?{????public?static?void?main(String[]?args)??{
????????Shape?shape?=?new?Circle();
????????System.out.println(shape.name);
????????shape.printType();
????????shape.printName();
????}
}?
class?Shape?{????public?String?name?=?"shape";?????
????public?Shape(){
????????System.out.println("shape?constructor");
????}?????
????public?void?printType()?{
????????System.out.println("this?is?shape");
????}?????
????public?static?void?printName()?{
????????System.out.println("shape");
????}
}?
class?Circle?extends?Shape?{????public?String?name?=?"circle";?????
????public?Circle()?{
????????System.out.println("circle?constructor");
????}?????
????public?void?printType()?{
????????System.out.println("this?is?circle");
????}?????
????public?static?void?printName()?{
????????System.out.println("circle");
????}
}
這道題主要考察了隱藏和覆蓋的區(qū)別
覆蓋只針對非靜態(tài)方法(終態(tài)方法不能被繼承,所以就存在覆蓋一說了),而隱藏是針對成員變量和靜態(tài)方法的。這2者之間的區(qū)別是:覆蓋受RTTI(Runtime type identification)約束的,而隱藏卻不受該約束。也就是說只有覆蓋方法才會進行動態(tài)綁定,而隱藏是不會發(fā)生動態(tài)綁定的。在Java中,除了static方法和fina·方法,其他所有的方法都是動態(tài)綁定。因此,就會出現(xiàn)上面的輸出結(jié)果。
總結(jié)
父類的構(gòu)造器調(diào)用以及初始化過程一定在子類的前面
初始化順序也是按照;先對象成員初始化--->普通對象代碼塊初始化-->構(gòu)造方法初始化
以上就是動力節(jié)點java培訓(xùn)機構(gòu)的小編針對“互聯(lián)網(wǎng)常見的Java繼承基礎(chǔ)練習(xí)題”的內(nèi)容進行的回答,希望對大家有所幫助,如有疑問,請在線咨詢,有專業(yè)老師隨時為你服務(wù)。
相關(guān)閱讀
初級 202925
初級 203221
初級 202629
初級 203743