簡述抽象類和介面 抽象類區別的區別

2021-10-10 11:01:51 字數 1647 閱讀 8792

用abstract修飾的類叫抽象類

1、抽象類不能有物件,抽象類不能例項化,不能new

2、abstract修飾的方法為抽象方法,這種方法不能有方法體(什麼內容都沒有)

3、抽象類不能有物件,不能new物件

4、有抽象方法的一定是抽象類,抽象類中不一定有抽象方法

5、抽象型別中的抽象方法必須在子類中被重寫

抽象類不能被例項化,抽象方法必須被重寫,定義它們是幹嘛?

抽象類是用來被繼承的,如果沒有類去繼承它,也就失去了意義;抽象方法生來就是被重寫的,必須被重寫。(只要繼承了某個抽象類,就必須去重寫此類中的抽象方法)

public

abstract

class

animal

定義了乙個叫animal的抽象類含有兩個抽象方法,抽象方法後面也不能帶大括號。

之後定義乙個cat類

public

class

catextends

animal

@override

public

void

sleep()

}

在這裡指的注意的是:當乙個類繼承抽象類的時候,這個類必須去重寫所繼承的抽象類的抽象方法

介面是對抽象類的進一步抽象

介面就是某個事物對外提供的一些功能的宣告,通過inte***ce關鍵字完成

注:1、介面中所有的屬性預設為:public static final。。。;

2、介面中所有的方法預設為:public abstract。。。;

3、介面不需要像類一樣被繼承,而是用implements去實現,類和介面的關係叫實現。

public

class

catimplements

sleep

,eat

@override

public

void

ioeat()

}public

inte***ce

sleep

public

inte***ce

eat

1、實現方法:

抽象類中可以有已經實現的方法,因為存在抽象方法,所以必須是抽象類

抽象類使用extends來繼承,抽象類就是用來被繼承的,所包含的抽象方法也需要被重寫

介面使用implement關鍵字來實現,提供介面中所有宣告方法的實現

(抽象類是將夢想傳給家族,一代一代去完成。那麼介面就是掌門人找大師兄來完成幫派的鴻星偉業,這時候就只有一次希望,要麼有能力就實現,沒能力就不要接。)

3、是否有構造器(建構函式)

抽象類是類,所有有類的所有特性,是不能被例項化,但可以有構造器

介面是不能有構造器的,是所包含的所有抽象方法的集合

4、修飾符

抽象類可以有public、protected、default這些修飾符

介面只有乙個修飾符public

5、執行速度

抽象方法快

介面執行滿,需要時間尋找在類中實現的方法

6、繼承實現

抽象類中乙個子類只能繼承乙個父類但是可以有多個介面

抽象方法 抽象類 介面 介面和抽象類的區別

某個父類只知道子類因該包含什麼樣的方法,無法知道這些子類如何實現這些方法。抽象類包含該方法但沒有對該方法的具體實現。有抽象方法的類只能被定義為抽象類,抽象類裡可以沒有抽象方法。抽象方法和抽象類的規則 public abstract class shape private string color p...

簡述抽象類和介面的區別?

一 抽象類 抽象類是特殊的類,只是不能被例項化 除此以外,具有類的其他特性 重要的是抽象類可以包括抽象方法,這是普通類所不能的。抽象方法只能宣告於抽象類中,且不包含任何實現,派生類必須覆蓋它們。另外,抽象類可以派生自乙個抽象類,可以覆蓋基類的抽象方法也可以不覆蓋,如果不覆蓋,則其派生類必須覆蓋它們。...

簡述類 結構 抽象類 介面

類 類的定義是以關鍵字class開始,後跟類的名稱。類的主體。類中常用的成員有欄位 屬性 方法等成員。類與抽象類的比較 類可以例項化而抽象類不能。抽象類中有未實現的方法體。抽象類使用abstract關鍵字宣告。結構 結構是值型別 結構不能繼承類或者結構,但它可以繼承介面。在結構中定義變數時不能賦初值...