php 的抽象方法和抽象類和介面

2021-09-12 15:58:36 字數 2620 閱讀 3118

php 的抽象方法和抽象類和介面

1. 什麼是抽象方法?

定義:乙個方法如果沒有方法體,則這個方法就是抽象方法。

沒有方法體: 乙個方法不使用 「{}」,直接使用分號結束的方法。

如果是抽象方法,必須使用 abstract 來修飾

2. 什麼是抽象類?

如果乙個類中有乙個方法是抽象方法,則這個類是抽象類。 如果宣告乙個抽象類,必須使用 abstract 來修飾

注意:

只要使用 abstract 修飾的類就是抽象類。不一定有抽象方法

抽象類是一種特殊的類,在抽象類中可以有抽象方法。

除了在抽象類中可以有抽象方法,其他和正常的類完全一樣。

注意 2:

抽象類不能例項化物件

如果看見抽象類就必須寫這個類的子類。將抽象類的抽象方法覆蓋(加上方法體)

子類必須全部實現抽象類的抽象方法。如果只實現部分,那麼子類也必須是抽象類。

抽象方法的作用:

抽象方法的作用就是規定子類必須有這個方法的實現,功能交給子類。 只寫出結構,而沒有實現,實現交給子類按照自己的功能去實現。

抽象類的作用:

規範所有子類的寫法

abstract

class

person

function

sleep()

}class

studentcn

extends

person

}class

studenten

extends

person

}$s1

=new

studenten()

;$s2

=new

studentcn()

;$s1

->

say();

$s2-

>

say(

);

抽象類是一種抽象的類,介面是一種特殊的抽象類。

抽象類和介面中都有抽象方法

抽象類和介面都不能例項化物件

抽象類和介面使用作用一樣,都是規範

介面和抽象類相比,特殊在**?

介面中的方法,必須全部是抽象方法。所以在介面中,可以省略 abstract

介面中的成員屬性,必須是常量(不能有變數)。

所有的許可權必須是公有的(public)

宣告介面使用inte***ce

介面應用的一些細節:

可以使用extends繼承自另乙個介面。(介面和介面只有擴充套件新抽象方法,沒有覆蓋的關係)

可以使用乙個類來實現介面中的全部方法,也可以使用乙個抽象類,來實現介面中的部分方法

(類與介面,抽象類與介面 =》有實現介面中的抽象方法)

類(抽象類)實現介面使用關鍵字 implements

實現多個介面只需要使用逗號分開即可。

inte***ce

demo

inte***ce

test

extends

demo

inte***ce

abcclass

world

}class

hello

extends

world

implements

test

,abc

function

demo2()

function

demo3()

function

test4()

function

abc(

)function

test5()

}$h=new

hello()

;$h->

demo3()

;

inte***ce

usbclass

computer

}class

mouse

implements

usbfunction

run(

)function

stop()

}class

keyboard

implements

usbfunction

run(

)function

stop()

}class

worker}$m

=new

mouse()

;$k=new

keyboard()

;worker:

:work($m

);worker:

:work($k

);

介面,抽象類和抽象方法

1.定義介面 介面使用 inte ce 關鍵字宣告,它與類的宣告類似。介面宣告預設 是 public 的。通常介面命名已i字母開頭。inte ce 介面名 2.介面繼承介面 多個介面用,號進行區分 inte ce 介面名 繼承的介面名 3.類實現介面 訪問修飾符 class 類名 介面名 4.乙個類...

抽象類,抽象方法和介面

抽象類 抽象類是一種模板模式,為所有子類提供乙個通用模板,子類可以在這個模板基礎上進行擴充套件。通過抽象類,可以避免子類設計的隨意性。通過抽象類,我們可以做到嚴格限制子類的設計,使子類之間更加通用。抽象類的要點 public abstract class animal class student e...

抽象類,抽象方法和介面

含有抽象方法的類 沒有方法實現體的方法就是抽象方法 抽象方法的關鍵字是abstract 抽象方法沒有方法體 public abstract 返回值資料型別 抽象方法名 引數列表 注意抽象方法沒有方法體 public abstract class 類名1.乙個類繼承抽象類,那麼就會重寫抽象類中所有的抽...