物件導向 OOP中的抽象類,介面以及多型

2021-09-25 18:28:39 字數 2658 閱讀 4178

[抽象類與抽象方法]

1、什麼是抽象方法?

沒有方法體{}的方法,必須使用abstract關鍵字修飾,這樣的方法,我們稱之為抽象方法。

abstract function say()

2、什麼是抽象類?

包含抽象方法的類就是抽象類,抽象類必須使用abstract關鍵字修飾

abstract class person{}

3、抽象類的注意事項

①抽象類可以包含非抽象方法

②包含抽象方法的類,一定是抽象類

抽象類 並不一定包含抽象方法

③抽象類,不能例項化

(抽象類中可能包含抽象方法,抽象方法沒有方法體,例項化呼叫沒有意義)

我們使用抽象類的目的就是限制例項化

4、子類繼承抽象類,那麼子類必須重寫父類的所有抽象方法,除非,子類也是抽象類

5、使用抽象類的作用?

① 限制例項化。(抽象類是乙個不完整的類,裡面的抽象方法沒有方法體,所以不能例項化)

② 抽象類為子類的繼承提供一種規範,子類繼承乙個抽象類,則必須包含並且實現抽象類中已定的抽象方法

abstract

class

person }

abstract

class

chinese extends person

[介面]

1、什麼是介面?

介面是一種規範,提供了一組實現介面的類所必須實現的方法組合

介面的使用inte***ce關鍵字宣告

inte***ce inter{}

2、介面中的所有方法必須都是抽象方法

介面中的抽象方法不需要也不能使用abstract修飾

3、介面中不能宣告變數,不能有屬性,只能使用常量

4、介面可以繼承介面,使用extends關鍵字

介面使用extends繼承介面,也不能實現多繼承

inte***ce int1 extends inter{}

5、類可以實現介面,使用implements關鍵字

類使用implements實現介面,可同時實現多個介面,多個介面用逗號分隔

abstract class person implements inter,inter2{}

乙個類實現乙個或多個介面,那麼這個型別必須實現所有介面中的所有抽象方法,除非,這個類是抽象類

[介面與抽象類的區別]

1、宣告方式上,介面用inte***ce關鍵字,抽象類使用abstract class

2、實現\繼承方式上,乙個類使用extends繼承抽象類,使用implements實現介面

3、抽象類只能單繼承,介面可以多實現(介面extends介面),多實現(類implements介面)

4、抽象類中可以有非抽象方法,介面中只能有抽象方法,不能有非抽象方法

抽象類中的抽象方法必須使用abstract關鍵字修飾,介面中抽象方法不能帶修飾詞

5、抽象類是個類,可以有屬性,變數。介面中只能有常量。

inte***ce

inter

inte***ce

int1 extends inter{};

abstract

class

person implements inter

模擬印表機案例:

墨盒:彩色、黑白

紙張型別:a4、b5

墨盒和紙張都不是印表機廠商提供的

印表機的列印功能需要使用相容市場上的墨盒、紙張

測試 

inte***ce

mohe

inte***ce

*****

class

printer

}class

black implements mohe

}class

colors implements mohe

}class

a4 implements *****

}class

b5 implements *****

}$parint = new

printer();

$parint->prints(new colors(), new a4());

[多型]

1、乙個類被多個子類繼承

如果,這個類的某個方法,再多個子類中,表現出不同的功能,我們稱這種行為為多型

2、實現多型的必要途徑

①子類繼承父類;

②子類重寫父類方法;

③父類引用指向子類物件;

abstract

class

persom

class

chinese extends persom

}class

english extends persom }/*

$c = new chinese();

$c ->say();

$e = new english();

$e ->say();

*/function func(person $p)

func(

newchinese());

func(

new english());

OOP(物件導向)抽象類和介面

1.抽象類 abstract修飾的類就是抽象類 父類通常是抽象的,不能例項化 格式 public abstract class a 特徵 不可以直接例項化 可以有構造方法,可以有屬性 留給子類使用 可以有自定義方法 可以有抽象方法,子類必須重寫抽象父類的抽象方法,除非子類也是抽象類 應用場景 是乙個...

物件導向 OOP中的抽象類,介面以及多型

抽象類與抽象方法 1 什麼是抽象方法?沒有方法體 的方法,必須使用abstract關鍵字修飾,這樣的方法,我們稱之為抽象方法。abstract function say 2 什麼是抽象類?包含抽象方法的類就是抽象類,抽象類必須使用abstract關鍵字修飾 abstract class person...

物件導向 介面類 抽象類

python 沒有介面這個概念 介面類,抽象類 制定乙個規範.介面類,抽象類 python中就是一樣的 1,歸一化設計.2,制定乙個規範,凡是繼承我類的類,必須有我規定的方法.第一版class alipay def init self,money self.money money defpay se...