前言
PHP手冊(cè)系列文章兔仰,會(huì)挑選一些手冊(cè)中有意思的評(píng)論進(jìn)行翻譯
手冊(cè)目錄: 語言參考---類與對(duì)象---抽象類
參考詳情
評(píng)論
- 盡管不能使用new來創(chuàng)建抽象類的實(shí)例,但是依然可以使用::來調(diào)用抽象類中的靜態(tài)方法
abstract class Foo
{
static function bar()
{
echo "test\n";
}
}
Foo::bar(); // output test
- 你可以像這樣使用abstract
abstract class A{
public function show(){
echo 'A';
}
}
class B extends A{
public function hello(){
echo 'B';
parent::show();
}
}
$obj = new B;
$obj->hello(); // BA
可以看到茫负,抽象類不一定包含有抽象方法,抽象類可繼承,并且可以在子類中使用parent關(guān)鍵字
- 一段代碼
abstract class Basic {
public static function doWork() {
return static::work();
}
abstract public static function work();
}
class Keeks extends Basic {
public static function work() {
return 'Keeks';
}
}
echo Keeks::doWork(); //output Keeks
可以聲明靜態(tài)抽象方法乎赴,抽象類中非抽象方法里調(diào)用靜態(tài)抽象方法,務(wù)必不能使用self,請(qǐng)使用static代替
- 實(shí)際上,抽象類不一定是基類,它也可以繼承別的類或者抽象類
class Foo {
public function sneeze() { echo 'achoooo'; }
}
abstract class Bar extends Foo {
public abstract function hiccup();
}
class Baz extends Bar {
public function hiccup() { echo 'hiccup!'; }
}
$baz = new Baz();
$baz->sneeze(); //achoooo
$baz->hiccup(); //hiccup!
- 抽象類可以繼承抽象類,同時(shí)會(huì)繼承抽象方法,所以注意避免重復(fù)定義方法,以及實(shí)現(xiàn)類的實(shí)現(xiàn)個(gè)數(shù)