PHP 類與物件 抽象類

2021-10-06 17:26:34 字數 1901 閱讀 6277

抽象類或者抽象方法前面加上abstract關鍵字。

php5開始支援抽象類和抽象方法

定義為抽象的類不能例項化。但是可以被繼承。

任何乙個類,如果它裡面至少有乙個方法是被宣告為抽象的,那麼這個類就必須被宣告為抽象的。

被定義為抽象的方法只是宣告了其呼叫方式(引數),不能定義其具體的功能實現。

繼承乙個抽象類的時候,子類必須定義父類中的所有抽象方法。

子類的訪問控制必須和父類一樣,或者更加寬鬆,比如某個抽象方法被宣告為受保護的,那麼子類中實現的方法就應該宣告為受保護的或者公有的,而不能定義為私有的。

子類呼叫父類的呼叫方式必須匹配,就是型別和所需引數數量必須一致。例如,子類定義了乙個可選引數,而父類抽象方法的宣告裡沒有,則兩者的宣告並無衝突。

abstract

class

abstractphone

abstract

protected

function

getvalue()

;abstract

protected

function

prefixvalue

($prefix);

//普通方法(非抽象方法)

public

function

printout()

}class

phoneclass1

extends

abstractphone

public

function

prefixvalue

($prefix

)phone1";}

}class

phoneclass2

extends

abstractphone

public

function

prefixvalue

($prefix

)phone2";}

}$phone1

=new

phoneclass1()

;$phone1

->

printout()

;echo

$phone1

->

prefixvalue

('meizu').

"\n"

;$phone2

=new

phoneclass2()

;$phone2

->

printout()

;echo

$phone2

->

prefixvalue

('meizu').

"\n"

;//輸出

phone1

meizuphone1

phone2

meizuphone2

abstract

class

abstractclass

class

phone

extends

abstractclasss

elseif

($name

=="pacwoman"

)else

return"

";}}

$class

=new

concreteclass

;echo

$class

->

prefixname

("pacman"),

"\n"

;echo

$class

->

prefixname

("pacwoman"),

"\n";輸出

mr. pacman

mrs. pacwoman

PHP 物件導向 抽象類繼承抽象類

抽象類繼承另外乙個抽象類時,不用重寫其中的抽象方法。抽象類中,不能重寫抽象父類的抽象方法。這樣的用法,可以理解為對抽象類的擴充套件。下面的例子,演示了乙個抽象類繼承自另外乙個抽象類時,不需要重寫其中的抽象方法。abstract class user abstract class vipuser ex...

PHP 物件導向 抽象類繼承抽象類

抽象類繼承另外乙個抽象類時,不用重寫其中的抽象方法。抽象類中,不能重寫抽象父類的抽象方法。這樣的用法,可以理解為對抽象類的擴充套件。下面的例子,演示了乙個抽象類繼承自另外乙個抽象類時,不需要重寫其中的抽象方法。abstract class user abstract class vipuser ex...

Php物件導向 抽象類

php物件導向 抽象類 抽象類abstract 有一種類,只能被繼承,不能例項化物件。原因就是這個類的定義不完整。因為php支援定義一種,只有方法的宣告部分,而沒有方法的實現部分的不完整方法。如果某個類,包含了這種不完整的方法,就不是不完整類,也就不能例項化物件。不完整的類,稱之抽象類 所包含的不完...