php5面向对象入门 (四) 接口

原文作者 刀客羽朋 ,这里重新整理,出处:http://www.cnblogs.com/tograce/category/161526.html

① 接口(interface)是抽象方法静态常量定义的集合;
② 接口是一种特殊的抽象类,这种抽象类只包含抽象方法和静态常量;
③ 接口中没有其它类型的内容。

4.1 接口的定义和相关规范
接口是这样定义的:

interface 接口名{ }

一个简单的接口:
interface user{
  
function getName();
  
function setName($_name);
  
//1.接口中只能有抽象方法,所以以下的都是错的:

  //private function setName($_name); 错
  //protected function setName($_name); 错
  //abstract function setName($_name); 错

}
其它说明:
2.在PHP5.2中,不建议在抽象类中使用静态抽象方法,但在interface中保留了静态抽象方法
interface User{
  
static function getName();
  
function setName($_name);
}
3.在接口中可以使用量,且不用static修饰的就是静态常量。
interface User{
  
const MAX_GRADE=99;//这里是静态常量
  static function getName();
  
function setName($_name);
}


4.2 接口实现

① 一个类使用 implements 实现接口,一个类可实现多个接口
② 类实现接口要实现其中的抽象方法。

4.2.1 用implements实现接口

在下面的实例中,我们实现了一个接口,但没有实现其中的抽象方法,所以调试时报错:
<?php
interface User{
  
const MAX_GRADE=98;
  
function getName();
  
function setName($_name);
}
class NormalUser implements User{
}
?>

我们来看一个正确的实现接口的例子,注意静态变量的使用
Code

4.2.2 实现多个接口
(在下面的例子中体现)

4.2.3 继承并实现接口
这个例子是不完整的......
Code


4.3 接口继承
一个接口可继承自另一个接口同样使用用关键字 extends(是说只限于接口与接口之间)
② PHP5中的类是单继承,但一个接口可继承自多个接口;
③ 一个接口继承自其它接口后,直接继承父接口的抽象方法和静态常量属性。

4.3.3 接口实现继承
Code
在以上的例子中,定义了接口User,它有两个抽象方法getName和setName,后定义了接口VipUser,它继承自User,它有一个抽象方法getDiscount,然后定义类Vip,实现了VipUser接口,并实现三个抽象方法。

4.3.3 接口实现多继承
Code


4.4 抽象类实现接口

 
抽象类实现接口,可以不实现其中的抽象方法,而将抽象方法的实现交给具体能被实例化的类处理
下面的实例是
抽象类实现接口,但我觉得并没有用到实现接口的语法
Code
posted @ 2009-07-30 15:49  尚远  阅读(357)  评论(0编辑  收藏  举报