抽象類和接口(面試題總結)


1、多態是什么,多態的前提條件是什么?
    多態:同一個對象(事物),在不同的時刻體現出來不同的狀態。 
      舉例: 
       貓是貓,貓是動物。 
      水(液體,固體,氣態) 
     
    多態的前提: 
       A:要有繼承關系 
       B:要有方法重寫 
       C:要有父類引用指向子類的對象。 
            父 f = new 子(); 

2、多態中成員訪問的特點分別是什么?
    成員變量
      編譯看左邊(父類),運行看左邊(父類)
      成員方法
      編譯看左邊(父類),運行看右邊(子類)。

    靜態方法
      編譯看左邊(父類),運行看左邊(父類)。
      (靜態和類相關,算不上重寫,所以,訪問還是左邊的)
      只有非靜態的成員方法,編譯看左邊,運行看右邊


3、什么是接口,它的特點是什么?
    interface 關鍵字用來聲明一個接口,它可以產生一個完全抽象的類,並且不提供任何具體實現。 interface 的特性整理如下:

    1.接口中的方法可以有參數列表和返回類型,但不能有任何方法體。

    2.接口中可以包含字段,但是會被隱式的聲明為 static 和 final 。

    3.接口中的字段只是被存儲在該接口的靜態存儲區域內,而不屬於該接口。

    4.接口中的方法可以被聲明為 public 或不聲明,但結果都會按照 public 類型處理。

    5.當實現一個接口時,需要將被定義的方法聲明為 public 類型的,否則為默認訪問類型, Java 編譯器不允許這種情況。

    6.如果沒有實現接口中所有方法,那么創建的仍然是一個接口。

    7.擴展一個接口來生成新的接口應使用關鍵字 extends ,實現一個接口使用 implements 。

    8.接口中的方法是抽象方法(abstract),不能是靜態方法(static).接口的所有方法都是抽象的,而抽象方法是沒有static,有static的方法是不能override的,所以這樣定義接口才有意義。


4、抽象類和接口的區別是什么?
     第一點. 接口是抽象類的變體,接口中所有的方法都是抽象的。而抽象類是聲明方法的存在而不去實現它的類。
         第二點. 接口可以多繼承,抽象類不行
         第三點. 接口定義方法,不能實現,而抽象類可以實現部分方法。
         第四點. 接口中基本數據類型為static 而抽類象不是的。
         第五點.   接口中不能含有靜態代碼塊以及靜態方法,而抽象類可以含有靜態方法和靜態代碼塊。
     設計層面的討論

    模板式設計:就高級語言來說,每個類只能繼承一個類。在這個類中,你必須繼承或編寫出其所有子類的所有共性。抽象類的功能要遠超過接口,但是,定義抽象類的代價高。

    輻射式設計:對行為的一種規范。雖然接口在功能上會弱化許多,但是它只是針對一個動作的描述。而且你可以在一個類中同時實現多個接口。在設計階段會降低難度的。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM