我是OOP的新手,我在一次学习练习中得到了这个错误。
Class contains 6 abstract methods and must therefore be declared abstract or implement the remaining methods
错误是从抽象类的子类中抛出的,实现了一个接口。我知道抽象类的子类必须实现所有的抽象方法,但是我没有在父类或接口中声明任何抽象方法。如果我没有在子类中包含抽象类或接口中声明的抽象方法,我不应该只得到这个错误吗?
儿童班:
class OuterViewDecorator extends AbstractViewDecorator
{
const DEFAULT_TEMPLATE = "/var/www/portfolio/simple-php/templates/layout.php";
public function render() {
$data["innerview"] = $this->view->render();
return $this->renderTemplate($data);
}
}
父类:
abstract class AbstractViewDecorator implements ViewInterface
{
const DEFAULT_TEMPLATE = "default.php";
protected $template = self::DEFAULT_TEMPLATE;
protected $view;
public function __construct(ViewInterface $view)
{
$this->view = $view;
}
public function render()
{
return $this->view->render();
}
public function renderTemplate(array $data = array())
{
extract($data);
ob_start();
$template = include $this->template;
return ob_get_clean($template);
}
}
接口:
interface ViewInterface
{
public function setTemplate($template);
public function getTemplate();
public function __set($field, $value);
public function __get($field);
public function __isset($field);
public function __unset($field);
public function render();
}
感谢任何帮助
你是说它正在实现一个接口。
在所有继承类之间必须实现所有的接口方法,例如,您的AbstractViewDecorator
可以实现其中的2个方法,OuterViewDecorator
可以实现最后的4个方法,或者OuterViewDecorator
可以实现所有6个方法…只要所有方法都是类继承链中的实现。