什么是实现函数?通常,我所知道的是实现一个接口,该接口具有
function foo();
和实现like
function foo($bar)
在另一个班级
但是当我在接口中实现函数时会发生什么呢?我必须在子类中重新实现它们吗?或者我可以直接在子类中使用它们,假设它们是在子类中实现的。
interface ibarbar{
function foo($bar)
{
return $bar.$bar;}
}
class barbar implements ibarbar
{
function baz()
{
$this->barbar(); //used without implementing in subclass. expected results unknown.
}
}
PHP文档说
// This will not work
// Fatal error: Class BadTemplate contains 1 abstract methods
// and must therefore be declared abstract (iTemplate::getHtml)
class BadTemplate implements iTemplate
{
private $vars = array();
public function setVariable($name, $var)
{
$this->vars[$name] = $var;
}
}
因此,接口中的所有方法都是抽象方法。但是我找不到如何扩展一个函数。或者实现一个函数
发布于 2011-11-20 16:08:07
你不能在一个接口中实现一个函数。您只能指定其签名。
如果您希望为某些方法指定签名,但为其他方法提供实现,请使用抽象类:
abstract class A {
abstract public function B($c);
public function C($d) {
// do something
}
}
class B extends A {
public function B($c) { // need to implement B, as it is abstract
$this->C($c); // but can directly use C, as it is not
}
}
发布于 2011-11-20 16:08:57
根据定义,接口没有实现。这里你说的是继承,如果你有一个在另一个类中重写/ Shadow的实现的函数。
https://stackoverflow.com/questions/8202784
复制