php5面向对象入门 (四) 接口
原文作者 刀客羽朋 ,这里重新整理,出处:http://www.cnblogs.com/tograce/category/161526.html
① 接口(interface)是抽象方法和静态常量定义的集合;
② 接口是一种特殊的抽象类,这种抽象类只包含抽象方法和静态常量;
③ 接口中没有其它类型的内容。
4.1 接口的定义和相关规范
接口是这样定义的:
一个简单的接口:
2.在PHP5.2中,不建议在抽象类中使用静态抽象方法,但在interface中保留了静态抽象方法
4.2 接口实现
① 一个类使用 implements 实现接口,一个类可实现多个接口;
② 类实现接口要实现其中的抽象方法。
4.2.1 用implements实现接口
在下面的实例中,我们实现了一个接口,但没有实现其中的抽象方法,所以调试时报错:
我们来看一个正确的实现接口的例子,注意静态变量的使用
4.2.2 实现多个接口
(在下面的例子中体现)
4.2.3 继承并实现接口
这个例子是不完整的......
4.3 接口继承
① 一个接口可继承自另一个接口,同样使用用关键字 extends,(是说只限于接口与接口之间)
② PHP5中的类是单继承,但一个接口可继承自多个接口;
③ 一个接口继承自其它接口后,直接继承父接口的抽象方法和静态常量属性。
4.3.3 接口实现继承
4.3.3 接口实现多继承
4.4 抽象类实现接口
抽象类实现接口,可以不实现其中的抽象方法,而将抽象方法的实现交给具体能被实例化的类处理
下面的实例是抽象类实现接口,但我觉得并没有用到实现接口的语法
① 接口(interface)是抽象方法和静态常量定义的集合;
② 接口是一种特殊的抽象类,这种抽象类只包含抽象方法和静态常量;
③ 接口中没有其它类型的内容。
4.1 接口的定义和相关规范
接口是这样定义的:
interface 接口名{ }
一个简单的接口:
interface user{
function getName();
function setName($_name);
//1.接口中只能有抽象方法,所以以下的都是错的:
//private function setName($_name); 错
//protected function setName($_name); 错
//abstract function setName($_name); 错
}
其它说明: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修饰的就是静态常量。static function getName();
function setName($_name);
}
interface User{
const MAX_GRADE=99;//这里是静态常量
static function getName();
function setName($_name);
}
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{
}
?>
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