用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關鍵字宣告。結構 結構是值型別 結構不能繼承類或者結構,但它可以繼承介面。在結構中定義變數時不能賦初值...