PHP5中interface 和 abstract class 的区别

发布网友 发布时间:2022-04-20 01:34

我来回答

2个回答

懂视网 时间:2022-04-07 10:12

interface是指接口,使用接口(interface)你可以指定某个类必须实现哪些方法,但不需要定义这些方法的具体内容。

我们可以通过interface来定义一个接口,就像定义一个标准的类一样,但其中定义所有的方法都是空的。

接口中定义的所有方法都必须是public,这是接口的特性。

实现

要实现一个接口,可以使用implements操作符。类中必须实现接口中定义的所有方法,否则会报一个fatal错误。如果要实现多个接口,可以用逗号来分隔多个接口的名称。

注意:

1、实现多个接口时,接口中的方法不能有重名。

2、接口也可以继承,通过使用extends操作符。

常量

接口中也可以定义常量。接口常量和类常量的使用完全相同。 它们都是定值,不能被子类或子接口修改。

接口代码示例

<?php
 
// 声明一个'iTemplate'接口
interface iTemplate
{
 public function setVariable($name, $var);
 public function getHtml($template);
}
 
 
// 实现接口
// 下面的写法是正确的
class Template implements iTemplate
{
 private $vars = array();
 
 public function setVariable($name, $var)
 {
 $this->vars[$name] = $var;
 }
 
 public function getHtml($template)
 {
 foreach($this->vars as $name => $value) {
  $template = str_replace('{' . $name . '}', $value, $template);
 }
 
 return $template;
 }
}
 
// 下面的写法是错误的,会报错:
// 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;
 }
}
?>

更多相关教程请访问Gxlcms。

热心网友 时间:2022-04-07 07:20

interface是接口,abstract class是抽象类,可以把接口理解成特殊的抽象类。
在实现类里实现interface,里边的方法都必须重写。但是实现类继承abstract class,里边的方法可以只写自己需要重写的方法。一般情况下都是接口先找到抽象类,实现类继承抽象类方法重写。

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
10.915844s