日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時(shí)間:8:30-17:00
你可能遇到了下面的問(wèn)題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營(yíng)銷解決方案
Java面試題:多繼承

英文原文:Codemonkeyism,編譯:劉志軍

創(chuàng)新互聯(lián)專注于企業(yè)成都營(yíng)銷網(wǎng)站建設(shè)、網(wǎng)站重做改版、廣水網(wǎng)站定制設(shè)計(jì)、自適應(yīng)品牌網(wǎng)站建設(shè)、H5網(wǎng)站設(shè)計(jì)、成都商城網(wǎng)站開(kāi)發(fā)、集團(tuán)公司官網(wǎng)建設(shè)、外貿(mào)營(yíng)銷網(wǎng)站建設(shè)、高端網(wǎng)站制作、響應(yīng)式網(wǎng)頁(yè)設(shè)計(jì)等建站業(yè)務(wù),價(jià)格優(yōu)惠性價(jià)比高,為廣水等各大城市提供網(wǎng)站開(kāi)發(fā)制作服務(wù)。

招聘和面試對(duì)開(kāi)發(fā)經(jīng)理來(lái)說(shuō)是一個(gè)無(wú)盡頭的工作,雖然有時(shí)你可以從HR這邊獲得一些幫助,但是最后還是得由你來(lái)拍板,或者就像另一篇文章“Java 面試題:寫一個(gè)字符串的反轉(zhuǎn)”所說(shuō):

面試開(kāi)發(fā)人員不僅辛苦而且乏味,當(dāng)然也有一些極好的參考,如:Joel Guerilla Guide  to interviewing,但是最后錄用與否你來(lái)決定。為了快速了解他們的編程能力,我已經(jīng)想好要問(wèn)他們字符串反轉(zhuǎn)的問(wèn)題。

除了字符串反轉(zhuǎn)的問(wèn)題外,還有一道好題。

Java是否支持多重繼承?

好了,很明顯傳統(tǒng)意義上Java并沒(méi)有多繼承,所以正確的答案應(yīng)該是:“沒(méi)有”或者“有,但是”或者“沒(méi)有,但是”。單從這點(diǎn)就可以探索出不同的方法來(lái)。通常我會(huì)問(wèn)“是否因Java語(yǔ)言的設(shè)計(jì)者笨到?jīng)]法實(shí)現(xiàn)多重繼承”作為我們?cè)掝}的開(kāi)始,為什么C++那幫家伙實(shí)現(xiàn)了呢?我主要以菱形繼承問(wèn)題來(lái)說(shuō)明:

在面向?qū)ο蟮木幊陶Z(yǔ)言中總伴隨著多重繼承及組織的理解。菱形繼承問(wèn)題就是在如下情景時(shí)出現(xiàn)含糊不清的情況:當(dāng)兩個(gè)類B和C繼承自A,類D同時(shí)繼承自B和C, 如果D中的一個(gè)方法調(diào)用一個(gè)在A中定義的方法(不是覆蓋方法).而B(niǎo)和C分別用不同地方式重寫(overridden)了方法,那么這個(gè)方法到底是繼承的哪個(gè)類呢,B還是C?

另一探索性的方法是:Java怎么模擬“多重繼承”?我想答案已經(jīng)浮出水面了,就是接口(Interface)。我們經(jīng)常在Java中討論接口,那么應(yīng)試者在什么時(shí)候,怎么使用接口的呢? 使用接口又有什么好處呢?應(yīng)試者是否喜歡使用接口?我可以檢測(cè)他對(duì)建模有多熟練,有時(shí)還會(huì)讓他針對(duì)接口畫畫圖。我們繼續(xù)談?wù)揓ava中接口的問(wèn)題,當(dāng)兩個(gè) 接口有相同的靜態(tài)域(field),有一個(gè)類實(shí)現(xiàn)了Java中所謂的“多繼承”的兩個(gè)接口時(shí)會(huì)出現(xiàn)什么情況?

 
 
 
  1. publicinterfaceI1 { 
  2. String NAME = "codemonkeyism"; 
  3. publicinterfaceI2 { 
  4. String NAME = "stephan"; 
  5. publicclassC implementsI1, I2 { 
  6. publicstaticvoidmain(String[] args) { 
  7. System.out.println(NAME); 

  Java堅(jiān)持了他們的做法,語(yǔ)言的設(shè)計(jì)者決定不讓其編譯通過(guò)。

C.java:3: reference to NAME is ambiguous, both variable NAME 
              in I1 and variable NAME in I2 match
      System.out.println(NAME);
                         ^
1 error

還有更多的方法和我們的應(yīng)試者去探討多繼承的問(wèn)題, 例如:接口中方法的修飾符是什么?對(duì)于菱形繼承問(wèn)題使用traits實(shí)現(xiàn)混合結(jié)構(gòu)是否比使用接口更好,還是和多繼承一樣的糟糕?正如我不在那么鐘愛(ài)繼承一 樣,大量使用繼承是一種代碼異味。我們還可以和應(yīng)試者討論繼承的負(fù)面因素—–重耦合的例子。

為什么會(huì)有這問(wèn)題?

我為什么會(huì)問(wèn)這個(gè)問(wèn)題呢,從這個(gè)問(wèn)題中又學(xué)到了什么?繼承在面向?qū)ο螅∣O)中是很基礎(chǔ)的概念,是每個(gè)Java程序員都應(yīng)該理解的概念。同時(shí)也是他反映到工 作中,理解超出語(yǔ)法層面的另一個(gè)基本的特性。所以對(duì)于多繼承問(wèn)題,我喜歡那些可以引出很多可以探討與思考的問(wèn)題。這個(gè)繼承問(wèn)題只是多繼承、語(yǔ)言設(shè)計(jì)、代碼 味道、解決方案、接口、基于角色的開(kāi)發(fā)等眾多問(wèn)題中的一種而已。


本文名稱:Java面試題:多繼承
分享鏈接:http://m.5511xx.com/article/djpjgdc.html