接口的子類必須實現接口的所有方法嗎?java
接口的子類必須實現接口中所有的方法嗎?答案:不是。緣由以下:
編程
若是子類是非抽象類,則必須實現接口中的全部方法;ide
若是子類是抽象類,則能夠不實現接口中的全部方法,由於抽象類中容許有抽象方法的存在!函數
一、抽象類定義spa
抽象類每每用來表徵對問題領域進行分析、設計中得出的抽象概念,是對一系列看上去不一樣,可是本質上相同的具體概念的抽象。一般在編程語句中用 abstract 修飾的類是抽象類。在C++中,含有純虛擬函數的類稱爲抽象類,它不能生成對象;在java中,含有抽象方法的類稱爲抽象類,一樣不能生成對象。抽象類是 不完整的,它只能用做基類。在面向對象方法中,抽象類主要用來進行類型隱藏和充當全局變量的角色。設計
二、抽象類特色對象
1)抽象類不能實例化。繼承
2)抽象類能夠包含抽象方法和抽象訪問器。接口
3)不能用 sealed 修飾符修飾抽象類,由於這兩個修飾符的含義是相反的。 採用 sealed 修飾符的類沒法繼承,而 abstract 修飾符要求對類進行繼承。it
4)從抽象類派生的非抽象類必須包括繼承的全部抽象方法和抽象訪問器的實際實現。
三、與具體類的比較
1)抽象類不能直接實例化,而且對抽象類使用 new 運算符會致使編譯時錯誤。雖然一些變量和值在編譯時的類型能夠是抽象的,可是這樣的變量和值必須或者爲 null,或者含有對非抽象類的實例的引用(此非抽象類是從抽象類派生的)。
2)容許(但不要求)抽象類包含抽象成員。
3)抽象類不能被密封。
四、抽象類與接口的比較
1)相同點
a、不能實例化;
b、包含未實現的方法聲明;
c、派生類必須實現未實現的方法,抽象類是抽象方法,接口則是全部成員(不只是方法包括其餘成員)
2)不一樣點
a、類能夠實現無限個接口,但僅能從一個抽象(或任何其餘類型)類繼承,從抽象類派生的類仍可實現接口,從而得出接口是用來解決多重繼承問題的。
b、抽象類當中能夠存在非抽象的方法,可接口不能,且它裏面的方法只是一個聲明必須用public來修飾沒有具體實現的方法。
c、抽象類中的成員變量能夠被不一樣的修飾符來修飾,可接口中的成員變量默認的都是靜態常量(static final)。
d、抽象類是對象的抽象,然而接口是一種行爲規範。
結論:綜上結果,因爲子類類型的不一樣,對接口的實現要求也是不同的。