国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

abstract class 和 interface 有什么區(qū)別

這篇具有很好參考價(jià)值的文章主要介紹了abstract class 和 interface 有什么區(qū)別。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問(wèn)。

目錄
  • abstract class 和 interface 有什么區(qū)別
    • 1.抽象類(lèi)
      • 1.1抽象類(lèi)的格式
      • 1.2抽象類(lèi)注意事項(xiàng)
    • 2.接口
      • 2.1接口的格式
      • 2.2接口可以多繼承
      • 2.3接口的實(shí)現(xiàn)(implements)
    • 3.異同

abstract class 和 interface 有什么區(qū)別

1.抽象類(lèi)

抽象類(lèi):聲明方法的存在而不實(shí)現(xiàn)的類(lèi),如果一個(gè)類(lèi)中沒(méi)有包含足夠的信息來(lái)描繪一個(gè)具體的對(duì)象,它只能被繼承,派生出子類(lèi),這樣的父類(lèi)就是抽象類(lèi)。

1.1抽象類(lèi)的格式

[public] abstract class 類(lèi)名 [extends父類(lèi)] [implements接口列表]
{
    //屬性聲明及初始化;
    //抽象方法的聲明;
    //非抽象方法聲明及方法體;
}

1.2抽象類(lèi)注意事項(xiàng)

1.修飾抽象類(lèi)的修飾符有public和默認(rèn)修飾符兩種;

2.抽象類(lèi)中可以有抽象方法,也可以有非抽象的方法;

3.抽象方法是無(wú)方法體的方法。

4.定義抽象類(lèi)時(shí),要在關(guān)鍵字class的前面添加abstract。

5.抽象類(lèi)不能被實(shí)例化;

6.其包含的抽象方法必須在其子類(lèi)中被實(shí)現(xiàn),否則該子類(lèi)只能聲明為abstract;

7.抽象方法不能為static;

8.在下列情況下,一個(gè)類(lèi)必須聲明為抽象類(lèi):

  1. 當(dāng)一個(gè)類(lèi)的一個(gè)或多個(gè)方法是抽象方法時(shí);
  2. 當(dāng)類(lèi)是一個(gè)抽象類(lèi)的子類(lèi),并且沒(méi)有實(shí)現(xiàn)父類(lèi)的所有抽象方法,即只實(shí)現(xiàn)部分;
  3. 當(dāng)一個(gè)類(lèi)實(shí)現(xiàn)一個(gè)接口,并且不能為全部抽象方法都提供實(shí)現(xiàn)時(shí);

2.接口

由于類(lèi)的多繼承能夠?qū)е路椒ㄕ{(diào)用的沖突,所以Java中的類(lèi)只能單繼承。但是很多時(shí)候還是需要多繼承的,Java中的接口就可以實(shí)現(xiàn)多繼承,接口中不存在具體方法,不會(huì)引起方法調(diào)用的沖突。instanceof運(yùn)算符可以用來(lái)決定某對(duì)象的類(lèi)是否實(shí)現(xiàn)了接口

2.1接口的格式

[public] interface 接口名 [extends 父接口列表]{
     // 屬性聲明,不寫(xiě)也是公共常量
     [public] [static] [final] 屬性類(lèi)型屬性名 = 常量值 ;
     // 方法聲明
     [public] [abstract] 返回值類(lèi)型方法名 ( 參數(shù)列表 ) ;
}

1.接口中只包含常量和抽象方法,而沒(méi)有變量和方法的實(shí)現(xiàn),接口對(duì)類(lèi)來(lái)說(shuō)是一套規(guī)范,是一套行為協(xié)議。
2.接口不是一個(gè)類(lèi),不能實(shí)例化。
3.接口規(guī)定了類(lèi)的共同行為。
4.在Java中,接口的聲明采用interface關(guān)鍵字,接口不是一個(gè)類(lèi),沒(méi)有構(gòu)造方法,不能被實(shí)例化。
5.修飾接口的修飾符只有public和默認(rèn)修飾符兩種,不寫(xiě)也是public的
6.接口可以是多繼承,接口只能繼承接口,不能繼承類(lèi)。
7.屬性必須是常量(有初值),方法必須是抽象的(無(wú)方法體)。

2.2接口可以多繼承

//B,C也是接口
public interface A extends B,C {
}

2.3接口的實(shí)現(xiàn)(implements)

如果一個(gè)類(lèi)要實(shí)現(xiàn)一個(gè)接口,那么這個(gè)類(lèi)就必須實(shí)現(xiàn)接口中所有抽象方法。否則這個(gè)類(lèi)只能聲明為抽象類(lèi),多個(gè)無(wú)關(guān)的類(lèi)可以實(shí)現(xiàn)一個(gè)接口,一個(gè)類(lèi)可以實(shí)現(xiàn)多個(gè)無(wú)關(guān)的接口,一個(gè)類(lèi)可以在繼承一個(gè)父類(lèi)的同時(shí),實(shí)現(xiàn)一個(gè)或多個(gè)接口。

class 類(lèi)名 [extends 父類(lèi)] [implements 接口列表]
{
 覆蓋所有接口中定義的方法;
}

3.異同

相同:子類(lèi)必須實(shí)現(xiàn)它門(mén)的抽象方法,抽象類(lèi)與接口都不能創(chuàng)建自己的對(duì)象
不同:繼承使用extends,接口的實(shí)現(xiàn)用implements
抽象類(lèi)可以沒(méi)有抽象方法,接口中方法都是抽象的
抽象類(lèi)可以有自己構(gòu)造器及普通方法,接口中沒(méi)有構(gòu)造器
子類(lèi)只能繼承一個(gè)抽象類(lèi),但可以實(shí)現(xiàn)多個(gè)接口
抽象類(lèi)主要通過(guò)共享的屬性,接口主要提供共享的方法文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-746306.html

到了這里,關(guān)于abstract class 和 interface 有什么區(qū)別的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來(lái)自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • 分分鐘搞定Java中的抽象類(lèi)和接口?。。。╝bstract & interface)

    分分鐘搞定Java中的抽象類(lèi)和接口!?。。╝bstract & interface)

    1.抽象類(lèi)的定義 概述: 我們創(chuàng)建一個(gè)動(dòng)物類(lèi),并且在這個(gè)類(lèi)中創(chuàng)建動(dòng)物對(duì)象,但是當(dāng)你提到動(dòng)物類(lèi),你并不知道我說(shuō)的是什么動(dòng)物,只有看到了具體的動(dòng)物,你才知道這是什么動(dòng)物,所以說(shuō)動(dòng)物本身并不是一個(gè)具體的事物,而是一個(gè)抽象的事物。只有真正的貓,狗才是具體的

    2024年02月01日
    瀏覽(22)
  • C++ 語(yǔ)言類(lèi) (class) 和抽象數(shù)據(jù)類(lèi)型 (abstract data type)

    在 C++ 語(yǔ)言中,我們使用類(lèi)定義自己的數(shù)據(jù)類(lèi)型。通過(guò)定義新的類(lèi)型來(lái)反映待解決問(wèn)題中的各種概念,從而使得程序更加簡(jiǎn)潔旦易于修改。數(shù)據(jù)抽象能幫助我們將對(duì)象的具體實(shí)現(xiàn)與對(duì)象所能執(zhí)行的操作分離開(kāi)來(lái)。 類(lèi)的兩項(xiàng)基本能力:一是數(shù)據(jù)抽象,即定義數(shù)據(jù)成員和函數(shù)成員

    2023年04月10日
    瀏覽(21)
  • Python 抽象屬性中發(fā)生的錯(cuò)誤 TypeError: Can‘t instantiate abstract class XXX with abstract methods xxx

    本篇文章我們介紹一個(gè)和抽象屬性相關(guān)的錯(cuò)誤, TypeError: Can’t instantiate abstract class Bike with abstract methods mileage 。 然后將介紹使用 abc 或抽象基類(lèi)模塊在 Python 中創(chuàng)建具有抽象屬性的類(lèi)。 如果在我們寫(xiě)代碼的過(guò)程中產(chǎn)生了錯(cuò)誤 TypeError: Can’t instantiate abstract class XXX with abstract

    2024年02月06日
    瀏覽(19)
  • TypeScript 中【class類(lèi)】與 【 接口 Interfaces】的聯(lián)合搭配使用解讀

    TypeScript 中【class類(lèi)】與 【 接口 Interfaces】的聯(lián)合搭配使用解讀

    導(dǎo)讀 : 前面章節(jié),我們講到過(guò) 接口(Interface)可以用于對(duì)「對(duì)象的形狀(Shape)」進(jìn)行描述。 本章節(jié)主要介紹接口的另一個(gè)用途,對(duì)類(lèi)的一 部分行為進(jìn)行抽象。 類(lèi)配合實(shí)現(xiàn)接口 實(shí)現(xiàn)( implements )是面向?qū)ο笾械囊粋€(gè)重要概念。 一般來(lái)講,一個(gè)類(lèi)只能繼承自另一個(gè)類(lèi) ,但

    2024年02月14日
    瀏覽(19)
  • PHP 在function中直接實(shí)例化interface,不用再class 后 implement

    突發(fā)奇想,php能不能實(shí)現(xiàn)類(lèi)似java 那種把interface 類(lèi)當(dāng)作方法的參數(shù)呢? java 代碼如下: 經(jīng)過(guò)調(diào)查,在國(guó)內(nèi)的帖子上沒(méi)有找到類(lèi)似的實(shí)現(xiàn)。只好求助于google 了。我在 stackoverflow 上發(fā)布了一個(gè)帖子,然而第二天被告知和其他問(wèn)題重復(fù)了。我看了那個(gè)問(wèn)題,和我想要的差不多。

    2024年02月16日
    瀏覽(21)
  • typescript中type、interface的區(qū)別

    一、概念定義 ?interface:接口 在TS 中主要用于定義【對(duì)象類(lèi)型】,可以對(duì)【對(duì)象】的形狀進(jìn)行描述。 type :類(lèi)型別名 為類(lèi)型創(chuàng)建一個(gè)新名稱(chēng),它并不是一個(gè)類(lèi)型,只是一個(gè)別名。 二,區(qū)別 interface: interface 用來(lái)定義一個(gè)類(lèi)結(jié)構(gòu),可以聲明多個(gè) 使用interface聲明,可以被繼承擴(kuò)

    2024年02月08日
    瀏覽(18)
  • typescript中interface和type的區(qū)別

    在TypeScript中,interface和type都用于定義類(lèi)型,但它們有以下區(qū)別: 語(yǔ)法 interface使用interface來(lái)定義類(lèi)型,而type使用type來(lái)定義類(lèi)型。 定義方式 interface 可以通過(guò)繼承其他interface來(lái)擴(kuò)展自身的屬性和方法,也可以多次聲明同名的interface,它們會(huì)自動(dòng)合并成一個(gè)接口。

    2024年02月16日
    瀏覽(30)
  • TypeScript中 interface 和 type 的區(qū)別

    區(qū)別1 使用 interface 和 type 都是表示給定數(shù)據(jù)結(jié)構(gòu)的常用方法。 定義的方式略有不同。 type 定義的時(shí)候有 “=” 符號(hào) 區(qū)別2 interface 可以多次聲明同一接口。它們將合并在一起形成一個(gè)接口定義。 type 只能聲明一次。 interface:可以多次聲明,并最終可共同復(fù)用; type:再次聲明

    2024年02月14日
    瀏覽(18)
  • 在 TypeScript 中 interface 和 type 的區(qū)別

    在 TypeScript 中, interface ?和? type ?都用于定義自定義類(lèi)型,但它們有一些區(qū)別: 語(yǔ)法風(fēng)格: interface ?使用? interface ?開(kāi)頭,而? type ?使用? type ?開(kāi)頭。例如: 擴(kuò)展和實(shí)現(xiàn): interface ?可以通過(guò)繼承或合并來(lái)擴(kuò)展其他接口,并支持類(lèi)實(shí)現(xiàn)。而? type ?在定義類(lèi)型

    2024年02月13日
    瀏覽(21)
  • 【TypeScript】TS中type和interface在類(lèi)型聲明時(shí)的區(qū)別

    【TypeScript】TS中type和interface在類(lèi)型聲明時(shí)的區(qū)別

    ?? 個(gè)人主頁(yè): 不叫貓先生 ???♂? 作者簡(jiǎn)介:2022年度博客之星前端領(lǐng)域TOP 2,前端領(lǐng)域優(yōu)質(zhì)作者、阿里云專(zhuān)家博主,專(zhuān)注于前端各領(lǐng)域技術(shù),共同學(xué)習(xí)共同進(jìn)步,一起加油呀! ??優(yōu)質(zhì)專(zhuān)欄: vue3+vite+typeScript從入門(mén)到實(shí)踐 ?? 資料領(lǐng)取:前端進(jìn)階資料可以找我免費(fèi)領(lǐng)取 ??

    2023年04月26日
    瀏覽(25)

覺(jué)得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包