抽象類或者抽象方法前面加上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支援定義一種,只有方法的宣告部分,而沒有方法的實現部分的不完整方法。如果某個類,包含了這種不完整的方法,就不是不完整類,也就不能例項化物件。不完整的類,稱之抽象類 所包含的不完...