手册目录: 语言参考---类与对象---抽象类
参考详情: https://secure.php.net/manual/zh/language.oop5.abstract.php
评论部分:
1. by joelhy
尽管不能使用new来创建抽象类的实例,但是依然可以使用::来调用抽象类中的静态方法,如:
<?php abstract class Foo { static function bar() { echo "test\n"; } } Foo::bar(); ?>输出test
2. by arma99eDAN@yahoo.com
你可以像这样使用abstract:
<?php 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关键字
3. by rmoisto@gmail.com
just some codes:
<?php 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 ?>#声明静态抽象方法
#抽象类中非抽象方法里调用静态抽象方法,务必不能使用self,请使用static代替
4. by bishop
实际上,抽象类不一定是基类,它也可以继承别的类或者抽象类.如:
<?php 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! ?>5. by sneakyimp@hotmail.com
抽象类可以继承抽象类,同时会继承抽象方法,所以注意避免重复定义方法,以及实现类的实现个数.