什么是实现函数?通常,我所知道的是实现一个带有
的接口function foo();
和实现类似
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;
}
}
表示接口中的所有方法都是抽象方法。但我不知道如何扩展一个函数。或者实现一个函数
你不能在接口中实现一个函数。只能指定其签名。
如果您想为某些方法指定签名,但为其他方法提供实现,请使用抽象类:
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
}
}
根据定义,接口没有实现。如果你有一个函数的实现,你在另一个类中重写/Shadow,你在这里谈论继承。