我想知道如何强制子类来实现给定的接口方法.
假设我有以下课程:
interface Serializable
{
public function __toString();
}
abstract class Tag // Any HTML or XML tag or whatever like <div>, <p>, <chucknorris>, etc
{
protected $attributes = array();
public function __get($memberName)
{
return $this->attributes[$member];
}
public function __set($memberName, $value)
{
$this->attributes[$memberName] = $value;
}
public function __construct() { }
public function __destruct() { }
}
我想强制任何子类“Tag”来实现“Serializable”接口.例如,如果我是一个“Paragraph”类,它会看起来像这样:
class Paragraph extends Tag implements View
{
public function __toString()
{
print '<p';
foreach($this->attributes as $attribute => $value)
print ' '.$attribute.'="'.$value.'"';
print '>';
// displaying children if any (not handled in this code sample).
print '</p>';
}
}
我如何强迫开发人员使他的“Paragraph”类从“Serializable”接口实现方法?
感谢您抽出宝贵时间阅读.
解决方法:
只需要抽象类实现接口:
interface requiredInterface
{
public function getName();
}
abstract class BaseClass implements requiredInterface
{
}
class MyClass extends BaseClass
{
}
Fatal error: Class MyClass contains 1 abstract method and must
therefore be declared abstract or implement the remaining methods
(requiredInterface::getName)
这要求开发人员编写requiredInterface的方法.
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。