溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點(diǎn)擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

Java抽象類和接口有什么不同

發(fā)布時(shí)間:2020-06-23 18:50:36 來源:億速云 閱讀:180 作者:元一 欄目:編程語言

Java抽象類和接口有什么不同?針對這個(gè)問題,這篇文章給出了相對應(yīng)的分析和解答,希望能幫助更多想解決這個(gè)問題的朋友找到更加簡單易行的辦法。

Java 抽象類與接口的區(qū)別

1、抽象類可以提供某些方法的部分實(shí)現(xiàn),而接口不可以;

2、抽象類是單個(gè)繼承機(jī)制,其子類不一定要實(shí)現(xiàn)父類中的所有沒實(shí)現(xiàn)的方法,而接口一個(gè)類可以有多個(gè)接口,并且方法都要實(shí)現(xiàn)。

抽象類

abstractclass和interface在Java語言中都是用來進(jìn)行抽象類(本文中的抽象類并非從abstractclass翻譯而來,它表示的是一個(gè)抽象體,而abstractclass為Java語言中用于定義抽象類的一種方法,請讀者注意區(qū)分)定義的,那么什么是抽象類,使用抽象類能為我們帶來什么好處呢?

在面向?qū)ο蟮母拍钪?,我們知道所有的對象都是通過類來描繪的,但是反過來卻不是這樣。并不是所有的類都是用來描繪對象的,如果一個(gè)類中沒有包含足夠的信息來描繪一個(gè)具體的對象,這樣的類就是抽象類。抽象類往往用來表征我們在對問題領(lǐng)域進(jìn)行分析、設(shè)計(jì)中得出的抽象概念,是對一系列看上去不同,但是本質(zhì)上相同的具體概念的抽象。比如:如果我們進(jìn)行一個(gè)圖形編輯軟件的開發(fā),就會發(fā)現(xiàn)問題領(lǐng)域存在著圓、三角形這樣一些具體概念,它們是不同的,但是它們又都屬于形狀這樣一個(gè)概念,形狀這個(gè)概念在問題領(lǐng)域是不存在的,它就是一個(gè)抽象概念。正是因?yàn)槌橄蟮母拍钤趩栴}領(lǐng)域沒有對應(yīng)的具體概念,所以用以表征抽象概念的抽象類是不能夠?qū)嵗摹?/p>

在面向?qū)ο箢I(lǐng)域,抽象類主要用來進(jìn)行類型隱藏。我們可以構(gòu)造出一個(gè)固定的一組行為的抽象描述,但是這組行為卻能夠有任意個(gè)可能的具體實(shí)現(xiàn)方式。這個(gè)抽象描述就是抽象類,而這一組任意個(gè)可能的具體實(shí)現(xiàn)則表現(xiàn)為所有可能的派生類。模塊可以操作一個(gè)抽象體。由于模塊依賴于一個(gè)固定的抽象體,因此它可以是不允許修改的;同時(shí),通過從這個(gè)抽象體派生,也可擴(kuò)展此模塊的行為功能。熟悉OCP的讀者一定知道,為了能夠?qū)崿F(xiàn)面向?qū)ο笤O(shè)計(jì)的一個(gè)最核心的原則 OCP(Open-ClosedPrinciple),抽象類是其中的關(guān)鍵所在。

接口

接口(軟件類接口)是指對協(xié)定進(jìn)行定義的引用類型。其他類型實(shí)現(xiàn)接口,以保證它們支持某些操作。接口指定必須由類提供的成員或?qū)崿F(xiàn)它的其他接口。與類相似,接口可以包含方法、屬性、索引器和事件作為成員。Java里面由于不允許多重繼承,所以如果要實(shí)現(xiàn)多個(gè)類的功能,則可以通過實(shí)現(xiàn)多個(gè)接口來實(shí)現(xiàn)。

關(guān)于Java抽象類和接口就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,可以學(xué)到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI