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

11.3 嵌套類

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


  面試例題1:請說明static nested class和inner class的不同。

  答案:

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

  nested class是合成型聚集關系(Composite Aggregation)的另一種表達方式,也就是說nested class也可以用Aggregation表達出來。但是,nested class更加精確地表達了一種專用的、緊耦合的關系,尤其在代碼生成時,nested class在Java中映射成inline class。比如,計算機專用開關電源類可以作為計算機類的nested class,但是,電池組類就不一定適合作為計算機類的nested class,因為,電池組類表述的是一個過于通用的對象,可能還被包含(Aggregation)于模型中的其他設備對象。class A nested in class B,則說明A是一個nested class,一般A是用來完成B中的某種重要功能的。

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

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

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

  面試例題2:關于下面類的定義,以下哪種說法是正確的?[研華科技2005年11月面試題]

  public class Droitwich{

  class one{

  private class two{

  public void main(){

  System.out.println("two");

  }

  }

  }}

  A.此代碼不能編譯成功,因為該類嵌套了不止一層

  B.此代碼不能編譯通過,因為class two是私有的

  C.此代碼可以編譯通過,并且在運行的時候輸出字符串two

  D.此代碼編譯沒有錯誤

  解析:

  內(nèi)部類或嵌套類在類層級上沒有限制,所以選項A是錯誤的。

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

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

  答案:D


上一章目錄下一章

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