您好,登錄后才能下訂單哦!
今天就跟大家聊聊有關(guān)java中接口與抽象類有什么不同,可能很多人都不太了解,為了讓大家更加了解,小編給大家總結(jié)了以下內(nèi)容,希望大家根據(jù)這篇文章可以有所收獲。
詳解java中接口與抽象類的區(qū)別
1.abstract class 在 Java 語(yǔ)言中表示的是一種繼承關(guān)系,一個(gè)類只能使用一次繼承關(guān)系。但是,一個(gè)類卻可以實(shí)現(xiàn)多個(gè)interface。
2.在abstract class 中可以有自己的數(shù)據(jù)成員,也可以有非abstarct的成員方法,而在interface中,只能夠有靜態(tài)的不能被修改的數(shù)據(jù)成員(也就是必須是static final的,不過在 interface中一般不定義數(shù)據(jù)成員),所有的成員方法都是abstract的。
3.abstract class和interface所反映出的設(shè)計(jì)理念不同。其實(shí)abstract class表示的是"is-a"關(guān)系,interface表示的是"like-a"關(guān)系。
4.實(shí)現(xiàn)抽象類和接口的類必須實(shí)現(xiàn)其中的所有方法。抽象類中可以有非抽象方法。接口中則不能有實(shí)現(xiàn)方法。
5.接口中定義的變量默認(rèn)是public static final 型,且必須給其初值,所以實(shí)現(xiàn)類中不能重新定義,也不能改變其值。
6.抽象類中的變量默認(rèn)是 friendly 型,其值可以在子類中重新定義,也可以重新賦值。
7.接口中的方法默認(rèn)都是 public,abstract 類型的。
結(jié)論
abstract class 和 interface 是 Java語(yǔ)言中的兩種定義抽象類的方式,它們之間有很大的相似性。但是對(duì)于它們的選擇卻又往往反映出對(duì)于問題領(lǐng)域中的概 念本質(zhì)的理解、對(duì)于設(shè)計(jì)意圖的反映是否正確、合理,因?yàn)樗鼈儽憩F(xiàn)了概念間的不同的關(guān)系(雖然都能夠?qū)崿F(xiàn)需求的功能)。這其實(shí)也是語(yǔ)言的一種的慣用法,希望讀者朋友能夠細(xì)細(xì)體會(huì)。
主要不同點(diǎn):
1.單繼承與多繼承
2.抽象類可以有自己的實(shí)現(xiàn)方法,有非抽象方法,數(shù)據(jù)變量可以不是public的,接口的方法都是public的,沒有自己的實(shí)利域,不能自己實(shí)現(xiàn)方法,方法都是抽象的,只能有靜態(tài)數(shù)據(jù)。
3.設(shè)計(jì)意圖,一個(gè)是一種抽象,一個(gè)是實(shí)現(xiàn)我能干什么的功能。
看完上述內(nèi)容,你們對(duì)java中接口與抽象類有什么不同有進(jìn)一步的了解嗎?如果還想了解更多知識(shí)或者相關(guān)內(nèi)容,請(qǐng)關(guān)注億速云行業(yè)資訊頻道,感謝大家的支持。
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。