欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Java接口和抽象類有什么區(qū)別

 更新時(shí)間:2020年12月07日 15:25:55   作者:馬悅悅  
這篇文章主要介紹了Java接口和抽象類有什么區(qū)別,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下

接口(interface)和抽象類(abstract class)是支持抽象類定義的兩種機(jī)制。

接口是公開的,不能有私有的方法或變量,接口中的所有方法都沒(méi)有方法體,通過(guò)關(guān)鍵字interface實(shí)現(xiàn)。

接口(英文:Interface),在JAVA編程語(yǔ)言中是一個(gè)抽象類型,是抽象方法的集合,接口通常以interface來(lái)聲明。一個(gè)類通過(guò)繼承接口的方式,從而來(lái)繼承接口的抽象方法。

接口并不是類,編寫接口的方式和類很相似,但是它們屬于不同的概念。類描述對(duì)象的屬性和方法。接口則包含類要實(shí)現(xiàn)的方法。

除非實(shí)現(xiàn)接口的類是抽象類,否則該類要定義接口中的所有方法。

接口無(wú)法被實(shí)例化,但是可以被實(shí)現(xiàn)。一個(gè)實(shí)現(xiàn)接口的類,必須實(shí)現(xiàn)接口內(nèi)所描述的所有方法,否則就必須聲明為抽象類。另外,在 Java 中,接口類型可用來(lái)聲明一個(gè)變量,他們可以成為一個(gè)空指針,或是被綁定在一個(gè)以此接口實(shí)現(xiàn)的對(duì)象。

抽象類是可以有私有方法或私有變量的,通過(guò)把類或者類中的方法聲明為abstract來(lái)表示一個(gè)類是抽象類,被聲明為抽象的方法不能包含方法體。子類實(shí)現(xiàn)方法必須含有相同的或者更低的訪問(wèn)級(jí)別(public->protected->private)。抽象類的子類為父類中所有抽象方法的具體實(shí)現(xiàn),否則也是抽象類。

接口可以被看作是抽象類的變體,接口中所有的方法都是抽象的,可以通過(guò)接口來(lái)間接的實(shí)現(xiàn)多重繼承。接口中的成員變量都是static final類型,由于抽象類可以包含部分方法的實(shí)現(xiàn),所以,在一些場(chǎng)合下抽象類比接口更有優(yōu)勢(shì)。

相同點(diǎn):

(1)都不能被實(shí)例化

(2)接口的實(shí)現(xiàn)類或抽象類的子類都只有實(shí)現(xiàn)了接口或抽象類中的方法后才能實(shí)例化。

不同點(diǎn):

(1)接口只有定義,不能有方法的實(shí)現(xiàn),java 1.8中可以定義default方法體,而抽象類可以有定義與實(shí)現(xiàn),方法可在抽象類中實(shí)現(xiàn)。

(2)實(shí)現(xiàn)接口的關(guān)鍵字為implements,繼承抽象類的關(guān)鍵字為extends。一個(gè)類可以實(shí)現(xiàn)多個(gè)接口,但一個(gè)類只能繼承一個(gè)抽象類。所以,使用接口可以間接地實(shí)現(xiàn)多重繼承。

(3)接口強(qiáng)調(diào)特定功能的實(shí)現(xiàn),而抽象類強(qiáng)調(diào)所屬關(guān)系。

(4)接口成員變量默認(rèn)為public static final,必須賦初值,不能被修改;其所有的成員方法都是public、abstract的。抽象類中成員變量默認(rèn)default,可在子類中被重新定義,也可被重新賦值;抽象方法被abstract修飾,不能被private、static、synchronized和native等修飾,必須以分號(hào)結(jié)尾,不帶花括號(hào)。

(5)接口被用于常用的功能,便于日后維護(hù)和添加刪除,而抽象類更傾向于充當(dāng)公共類的角色,不適用于日后重新對(duì)立面的代碼修改。功能需要累積時(shí)用抽象類,不需要累積時(shí)用接口。

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

最新評(píng)論