互聯(lián)網(wǎng)常見的Java繼承基礎(chǔ)練習(xí)題

互聯(lián)網(wǎng)常見的Java繼承基礎(chǔ)練習(xí)題

長沙一度軟件培訓(xùn)      2022-03-17 02:00:01     13

互聯(lián)網(wǎng)常見的Java繼承基礎(chǔ)練習(xí)題,1.下面這段代碼的輸出結(jié)果是什么?ublic?class?Test?{????public?static?void?main(String[]?args)??{??????

課程價格 請咨詢

上課時段: 授課校區(qū):

詳細介紹

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)造方法初始化

以上就是長沙一度軟件培訓(xùn)java培訓(xùn)機構(gòu)的小編針對“互聯(lián)網(wǎng)常見的Java繼承基礎(chǔ)練習(xí)題”的內(nèi)容進行的回答,希望對大家有所幫助,如有疑問,請在線咨詢,有專業(yè)老師隨時為你服務(wù)。

培訓(xùn)啦提醒您:交易時請核實對方資質(zhì),對于過大宣傳或承諾需謹慎!任何要求預(yù)付定金、匯款等方式均存在風(fēng)險,謹防上當(dāng)。