PHP類中的抽象類,抽象方法,abstract

2021-08-04 19:13:34 字數 1314 閱讀 8812

就是乙個不能例項化(不能new)的類。

定義形式:

abstract  class  類名

為什麼需要這樣乙個「抽象類」——它不能例項化物件。

請看如下**:

可見:抽象類的目的不是為了得到乙個自己的物件,而是為了「後代類」服務,給後代類提供一定的屬性和方法。

再看乙個具體一點的應用場景:

抽象方法,就是乙個「啥也不做」的方法:

定義形式:

abstract  function  方法名(形參1,形參2,... );

可見:1,抽象方法,只定義方法頭,沒有大括號部分的方法體;

2,可以看到,該方法實際上沒有任何可執行的**,自然並不能做任何事情;

3,該方法是「專用於被覆蓋(重寫)」;——實際上,抽象方法,是要求下級必須重寫。

可見:這種抽象類,抽象方法,其實目的是:設計上級類的人(程式設計師),要求設計下級類的人(成員),必須是做到哪些事情,但又不規定怎麼做。

l 1,乙個抽象方法,必須放在抽象類中。

l 2,但:乙個抽象類中,可以沒有抽象方法——實際應用中,其實很少見。

l 3,下級類必須去「重寫」上級類中的抽象方法,並給定具體實現**(即該方法有方法體);

——但如果下級類本身又是抽象類,就可以不這麼做——當然,做(去實現)也可以。

l 4,下級類實現上級類的抽象方法的時候,也要遵循如下原則:

n a,訪問修飾符的範圍不能更小;

n b,方法的引數跟上級類定義的保持一致;

n ——其實上兩條要求是「重寫」的要求,而這裡,其實本質就是重寫。

其**原理如下:

abstract  class a

class b extends a

}abstract class c extends a

abstrct function f3();

}這樣,

b必須是實現f1(),

而:c可以不實現f1(),也可以實現;

如果c沒有實現f1()則:

c的後代類也得去實現f1(),還得去實現f3()

抽象類 抽象方法

抽象類 1.類名前有abstruct修飾。有構造方法。在建立抽象類的子類的時候,還是會先建立抽象父類的物件的。2.抽象類不能例項化是指不能手動的new。抽象方法 1.抽象方法 沒有方法體且需要用abstruct關鍵字修飾 作用 需要改變的地方都應該是抽象。抽象方法只能存在於抽象類或介面中。2.有抽象...

抽象類,抽象方法

1 抽象類中可以有實現的方法。抽象方法必須在抽象類中。using system using system.collections.generic using system.linq using system.text namespace test 抽象類可以包含抽象屬性 public int age...

抽象類 抽象方法

抽象方法 使用 abstract修飾的方法,只有方法的宣告 沒有方法體 定義的是一種 規範 就是告訴子類必須要給抽象方法提供具體的實現 抽象類 包含抽象方法的類就是抽象類 通過abstract方法定義規範 然後要求子類必須定義具體實現 通過抽象類 我們就可以做到嚴格限制子類的設計 使子類之間更加通用...