第11章 面向?qū)ο?/p>

11.3 嵌套類

Java程序員面試寶典 作者:歐立奇、朱梅、段韜 編著


  面試?yán)}1:請(qǐng)說(shuō)明static nested class和inner class的不同。

  答案:

  1.nested(嵌套)class(一般是C++的說(shuō)法)

  nested class是合成型聚集關(guān)系(Composite Aggregation)的另一種表達(dá)方式,也就是說(shuō)nested class也可以用Aggregation表達(dá)出來(lái)。但是,nested class更加精確地表達(dá)了一種專用的、緊耦合的關(guān)系,尤其在代碼生成時(shí),nested class在Java中映射成inline class。比如,計(jì)算機(jī)專用開(kāi)關(guān)電源類可以作為計(jì)算機(jī)類的nested class,但是,電池組類就不一定適合作為計(jì)算機(jī)類的nested class,因?yàn)椋姵亟M類表述的是一個(gè)過(guò)于通用的對(duì)象,可能還被包含(Aggregation)于模型中的其他設(shè)備對(duì)象。class A nested in class B,則說(shuō)明A是一個(gè)nested class,一般A是用來(lái)完成B中的某種重要功能的。

  2.inner class(一般是Java的說(shuō)法)

  Java內(nèi)部類與C++嵌套類最大的不同就在于是否有指向外部的引用上。

  靜態(tài)內(nèi)部類(inner class)意味著:創(chuàng)建一個(gè)static內(nèi)部類的對(duì)象,不需要一個(gè)外部類對(duì)象;不能從一個(gè)static內(nèi)部類的一個(gè)對(duì)象訪問(wèn)一個(gè)外部類對(duì)象。

  面試?yán)}2:關(guān)于下面類的定義,以下哪種說(shuō)法是正確的?[研華科技2005年11月面試題]

  public class Droitwich{

  class one{

  private class two{

  public void main(){

  System.out.println("two");

  }

  }

  }}

  A.此代碼不能編譯成功,因?yàn)樵擃惽短琢瞬恢挂粚?/p>

  B.此代碼不能編譯通過(guò),因?yàn)閏lass two是私有的

  C.此代碼可以編譯通過(guò),并且在運(yùn)行的時(shí)候輸出字符串two

  D.此代碼編譯沒(méi)有錯(cuò)誤

  解析:

  內(nèi)部類或嵌套類在類層級(jí)上沒(méi)有限制,所以選項(xiàng)A是錯(cuò)誤的。

  內(nèi)部類可以是私有類,所以選項(xiàng)B也是錯(cuò)誤的。

  選項(xiàng)C的main方法不是public static void main的,并且假設(shè)命令行是java Droitwich,它不能在任何地方被調(diào)用。

  答案:D


上一章目錄下一章

Copyright ? 讀書網(wǎng) www.autoforsalebyowners.com 2005-2020, All Rights Reserved.
鄂ICP備15019699號(hào) 鄂公網(wǎng)安備 42010302001612號(hào)