抽象類別:
一個類別中有抽象方法,這個類別就變成了抽象類別。
抽象類別中class的前面必須有abstract
修飾符。
抽象類別中可以有普通方法,也可以有抽象方法,而抽象方法的數量可以是0個,也可以是多個。
子類別繼承父類,必須重寫全部的抽象方法,除非這個類別也變成了抽象類別。
免費線上學習影片推薦:java線上學習
介面:
表面上看,介面是一種特殊的抽象類,但是類別是類,介面是接口,是並列的關係。
介面中所有方法都必須是抽象的。 (1.8之後允許介面定義非抽象方法)
介面中方法定義預設為public abstract
類型,成員變數預設為public static final
類型。 (如果省略,系統會預設補全)。
抽象類別和普通類別的區別:
包含抽象方法的類別稱為抽象類別,但並不意味著在抽象類別中只能有抽象方法,和普通類別一樣,同樣可以擁有成員變數和普通的成員方法。
抽象類別和普通類別的差異如下:
抽象方法的存取修飾符必須為public
和protected
。
抽象類別不能被實例化。
如果一個類別繼承於抽象類,則子類別必須實作父類別的抽象方法,如果子類別沒有實作父類別的抽象方法,則子類別必須也一個抽象類別。
抽象類別和介面的區別:
一個類別只能繼承一個抽象類,而一個類別可以實作多個介面。
抽象類別可以有建構方法,介面中不能有建構方法。
抽象類別中可以有成員變量,介面中沒有成員變數。 (被final修飾變成了常數)
抽象類別中可以有普通方法,介面中所有方法都必須是抽象的。 (1.8後允許介面定義非抽象方法)
抽象類別中抽象方法的存取類型可以是public
,protected
,但介面中抽象方法的存取類型只能是public
,並且預設為public abstract
(省略則自動預設補全)。
抽象類別中的成員變數可以是各種類型的,而介面中的成員變數只能是public static final
類型的。
抽象類別中可以有靜態程式碼區塊和靜態方法,介面中不能含有靜態程式碼區塊以及靜態方法。
想學習更多相關文章教學請造訪:java語言入門
以上是java中抽象類別與普通類別、介面的區別分別是什麼的詳細內容。更多資訊請關注PHP中文網其他相關文章!