更新時間:2020-08-21 14:56:26 來源:動力節點 瀏覽2525次
接口和抽象類的區別?
Java接口(interface)和抽象類(abstract class)是支持抽象類定義的兩種機制。
接口是公開的,不能有私有的方法或變量,接口中的所有方法都沒有方法體,通過關鍵字interface實現。
抽象類是可以有私有方法或私有變量的,通過把類或者類中的方法聲明為abstract來表示一個類是抽象類,被聲明為抽象的方法不能包含方法體。子類實現方法必須含有相同的或者更低的訪問級別(public->protected->private)。抽象類的子類為父類中所有抽象方法的具體實現,否則也是抽象類。
接口可以被看作是抽象類的變體,接口中所有的方法都是抽象的,可以通過接口來間接的實現多重繼承。接口中的成員變量都是static final類型,由于抽象類可以包含部分方法的實現,所以,在一些場合下抽象類比接口更有優勢。
相同點:
⒈ 都不能被實例化
⒉ 接口的實現類或抽象類的子類都只有實現了接口或抽象類中的方法后才能實例化。
不同點:
⒈ 接口只有定義,不能有方法的實現,java 1.8中可以定義default方法體,而Java抽象類可以有定義與實現,方法可在抽象類中實現。
⒉ 實現接口的關鍵字為implements,繼承抽象類的關鍵字為extends。一個類可以實現多個接口,但一個類只能繼承一個抽象類。所以,使用接口可以間接地實現多重繼承。
⒊ 接口強調特定功能的實現,而抽象類強調所屬關系。
⒋ 接口成員變量默認為public static final,必須賦初值,不能被修改;其所有的成員方法都是public、abstract的。抽象類中成員變量默認default,可在子類中被重新定義,也可被重新賦值;抽象方法被abstract修飾,不能被private、static、synchronized和native等修飾,必須以分號結尾,不帶花括號。
⒌ 接口被用于常用的功能,便于日后維護和添加刪除,而抽象類更傾向于充當公共類的角色,不適用于日后重新對立面的代碼修改。功能需要累積時用抽象類,不需要累積時用接口。
以上就是動力節點java培訓機構的小編針對“Java接口與抽象類的相同與不同”的內容進行的回答,希望對大家有所幫助,如有疑問,請在線咨詢,有專業老師隨時為你服務。
0基礎 0學費 15天面授
有基礎 直達就業
業余時間 高薪轉行
工作1~3年,加薪神器
工作3~5年,晉升架構
提交申請后,顧問老師會電話與您溝通安排學習