我不明白我在做错什么
abstract class Css {
abstract protected function parse($data);
}
abstract class CssElem extends Css {
abstract protected function parse($data);
}
class Modifier extends CssElem {
function __construct($data = null) {
if( $data )
$this->parse ($data);
}
protected function parse($data) {
// Some code...
}
}
它给了我
[Mon Jul 8 13:21:10 2013] PHP Fatal error: Can’t inherit abstract
function Css::parse() (prevIoUsly declared abstract in CssElem) in
/home/arthur/NetBeansprojects/capa/CssElem.PHP on line 21 [Mon Jul 8
13:21:10 2013] 127.0.0.1:41207 [500]: / – Can’t inherit abstract
function Css::parse() (prevIoUsly declared abstract in CssElem) in
/home/arthur/NetBeansprojects/capa/CssElem.PHP on line 21
第21行是抽象保护函数解析($data);在CssElem.
我更熟悉Java中的OOP,但根据the doc …
尝试将您的中级班改为:
abstract class CssElem extends Css {
// abstract protected function parse($data); // <-- take this away
}
参见文档中的this comment.
引用来自评论:
An abstract class that extends an abstract class can pass the buck to its child classes when it comes to implementing the abstract methods of its parent abstract class.