當(dāng)前位置:首頁 > 科技 > 正文

抽象方法和接口的區(qū)別,抽象與具體的例子

抽象方法和接口的區(qū)別,抽象與具體的例子

大家好,今天小編來為大家解答抽象方法和接口的區(qū)別這個(gè)問題,抽象與具體的例子很多人還不知道,現(xiàn)在讓我們一起來看看吧!Java接口和抽象類的區(qū)別一、Java接口和抽象類的相...

大家好,今天小編來為大家解答抽象方法和接口的區(qū)別這個(gè)問題,抽象與具體的例子很多人還不知道,現(xiàn)在讓我們一起來看看吧!

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

一、Java接口和抽象類的相同點(diǎn)

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

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

二、Java接口和抽象類的不同點(diǎn)

(1)接口只有定義,不能有方法的實(shí)現(xiàn),java1.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)為publicstaticfinal,必須賦初值,不能被修改;其所有的成員方法都是public、abstract的。抽象類中成員變量默認(rèn)default,可在子類中被重新定義,也可被重新賦值;抽象方法被abstract修飾,不能被private、static、synchronized和native等修飾,必須以分號結(jié)尾,不帶花括號。

抽象類和接口的區(qū)別與聯(lián)系

抽象類和接口是面向?qū)ο缶幊讨械膬蓚€(gè)重要概念,它們有相似之處,但也存在一些區(qū)別。

區(qū)別:

實(shí)現(xiàn)方式:抽象類是一個(gè)普通類,可以包含普通的方法和字段,也可以包含抽象方法(沒有具體實(shí)現(xiàn))。接口是一組方法的集合,沒有實(shí)現(xiàn)部分,只有方法定義。

繼承關(guān)系:一個(gè)類只能繼承單個(gè)抽象類,而可以實(shí)現(xiàn)多個(gè)接口。這意味著一個(gè)類可以在繼承一個(gè)抽象類的同時(shí),實(shí)現(xiàn)多個(gè)接口。

構(gòu)造函數(shù):抽象類可以有構(gòu)造函數(shù),而接口不能擁有構(gòu)造函數(shù)。由于接口沒有實(shí)現(xiàn)的部分,它無法創(chuàng)建實(shí)例。

默認(rèn)實(shí)現(xiàn):抽象類可以為子類提供默認(rèn)的實(shí)現(xiàn),而接口中的方法沒有默認(rèn)實(shí)現(xiàn),實(shí)現(xiàn)類需要自行實(shí)現(xiàn)接口方法。

聯(lián)系:

都可用于定義類的行為和規(guī)范的組件。

都可以被子類或?qū)崿F(xiàn)類繼承或?qū)崿F(xiàn),并重寫其方法。

都可以用于實(shí)現(xiàn)多態(tài)性,即允許多個(gè)不同類的實(shí)例被視為同一種類型的對象。

使用選擇:

使用抽象類當(dāng)一個(gè)類要被子類繼承,并且提供通用的實(shí)現(xiàn)代碼時(shí)。

使用接口當(dāng)一個(gè)類要實(shí)現(xiàn)特定的功能而不關(guān)心具體實(shí)現(xiàn)細(xì)節(jié),并且可能需要一個(gè)類實(shí)現(xiàn)多個(gè)接口。接口主要用于定義類之間的契約,以確保實(shí)現(xiàn)類滿足特定的行為要求。

為什么不允許接口中只有一個(gè)抽象方法

正確的接口中方法都為抽象方法。

抽象類和接口的區(qū)別:抽象類由abstract關(guān)鍵字來修飾,接口由interface關(guān)鍵字來修飾。抽象類中除了有抽象方法外,也可以有數(shù)據(jù)成員和非抽象方法;而接口中所有的方法必須都是抽象的,接口中也可以定義數(shù)據(jù)成員,但必須是常量。

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

區(qū)別如下:

1、抽象類和接口都不能直接實(shí)例化,如果要實(shí)例化,抽象類變量必須指向?qū)崿F(xiàn)所有抽象方法的子類對象,接口變量必須指向?qū)崿F(xiàn)所有接口方法的類對象。

2、抽象類要被子類繼承,接口要被類實(shí)現(xiàn)。

3、接口只能做方法申明,抽象類中可以做方法申明,也可以做方法實(shí)現(xiàn)。

4、接口里定義的變量只能是公共的靜態(tài)的常量,抽象類中的變量是普通變量。

5、抽象類里的抽象方法必須全部被子類所實(shí)現(xiàn),如果子類不能全部實(shí)現(xiàn)父類抽象方法,那么該子類只能是抽象類。同樣,一個(gè)實(shí)現(xiàn)接口的時(shí)候,如不能全部實(shí)現(xiàn)接口方法,那么該類也只能為抽象類。

6、抽象方法只能申明,不能實(shí)現(xiàn),接口是設(shè)計(jì)的結(jié)果,抽象類是重構(gòu)的結(jié)果。

7、抽象類里可以沒有抽象方法。

8、如果一個(gè)類里有抽象方法,那么這個(gè)類只能是抽象類。

9、抽象方法要被實(shí)現(xiàn),所以不能是靜態(tài)的,也不能是私有的。

10、接口可繼承接口,并可多繼承接口,但類只能單根繼承。

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

1.接口是行為的抽象,是一種行為的規(guī)范,接口是likea的關(guān)系;抽象是對類的抽象,是一種模板設(shè)計(jì),抽象類是isa的關(guān)系。

2.接口沒有構(gòu)造方法,而抽象類有構(gòu)造方法,其方法一般給子類使用

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

4.抽象體現(xiàn)出了繼承關(guān)系,繼承只能單繼承。接口提現(xiàn)出來了實(shí)現(xiàn)的關(guān)系,實(shí)現(xiàn)可以多實(shí)現(xiàn)。接口強(qiáng)調(diào)特定功能的實(shí)現(xiàn),而抽象類強(qiáng)調(diào)所屬關(guān)系。

5.接口成員變量默認(rèn)為publicstaticfinal,必須賦初值,不能被修改;其所有的成員方法都是publicabstract的。

抽象類中成員變量默認(rèn)default,可在子類中被重新定義,也可被重新賦值;抽象方法被abstract修飾,不能被private、static、synchronized和native等修飾,必須以分號結(jié)尾,不帶花括號。

關(guān)于抽象方法和接口的區(qū)別的內(nèi)容到此結(jié)束,希望對大家有所幫助。

主站蜘蛛池模板: 狠狠做深爱婷婷综合一区| 人人狠狠综合88综合久久| 中文网丁香综合网| 国产在线五月综合婷婷| 国产欧美日韩综合自拍| 亚洲AV综合色一区二区三区| 亚洲综合色自拍一区| 一本一道久久a久久精品综合| 欧美精品色婷婷五月综合| 自拍 偷拍 另类 综合图片 | HEYZO无码综合国产精品227| 欧美激情综合色综合啪啪五月 | 伊人青青综合网站| 久久综合九色综合97_久久久| 亚洲精品国产第一综合99久久| 伊人色综合九久久天天蜜桃| 精品久久人人做人人爽综合 | 色婷婷综合和线在线| 激情五月婷婷综合| 99久久国产综合精品成人影院 | 天天影视色香欲综合久久| 曰韩人妻无码一区二区三区综合部| 婷婷四房综合激情五月在线| 色综合久久久久网| 中文字幕乱码人妻综合二区三区| 狠狠色丁香婷婷综合精品视频| 激情综合五月天| 婷婷五月综合丁香在线| 一本久久a久久精品综合夜夜 | 精品久久久久久综合日本| 久久婷婷午色综合夜啪| 狠狠色伊人久久精品综合网| 亚洲综合一区二区国产精品| 久久婷婷五月综合97色| 久久婷婷五月综合色奶水99啪| 欧美日韩国产综合视频在线看| 亚洲伊人久久综合影院| 五月综合激情网| 亚洲欧美日韩综合网导航| 91精品一区二区综合在线| 伊人久久大香线蕉综合影院首页|