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 而抽類象不是的。
第五點. 接口中不能含有靜態代碼塊以及靜態方法,而抽象類可以含有靜態方法和靜態代碼塊。
設計層面的討論
模板式設計:就高級語言來說,每個類只能繼承一個類。在這個類中,你必須繼承或編寫出其所有子類的所有共性。抽象類的功能要遠超過接口,但是,定義抽象類的代價高。
輻射式設計:對行為的一種規范。雖然接口在功能上會弱化許多,但是它只是針對一個動作的描述。而且你可以在一個類中同時實現多個接口。在設計階段會降低難度的。