【发布时间】:2013-09-20 17:16:27
【问题描述】:
我在下面写在一个单独的 php 文件中。
<?php
interface people
{
public function take($s);
}
class engineer extends people
{
public function take($s){
echo $s;
}
}
?>
人是一个接口,工程师扩展了人。 但是当我运行这段代码时,错误:
Fatal error: Class engineer cannot extend from interface people in E:\php5\Mywwwroot\b.php on line 12
发生了什么事?我的 PHP 版本是 5.4。
【问题讨论】:
-
类实现接口,而不是扩展它们。
-
PHP 使用 Java 的方法来防止钻石问题 - 请参阅 en.wikipedia.org/wiki/Multiple_inheritance - 因此使用 implements 关键字
-
谢谢大家。骗我。
-
顺便说一句,虽然您的问题在技术上已解决,但此示例可能更适合类继承而不是接口实现。也就是说,工程师是一种人,将承担一个人的大部分方法和功能,以及额外的、特定于工程师的方法。因此,您不是在实现接口,而是在扩展“人”类。不过,我当然不会将“人”作为抽象类或任何东西,因为您可能希望单独使用基类似乎是合理的。
-
@roast_soul 我的回复回答了你的问题吗?
标签: php inheritance interface