<?php
/*接口:接口其实就是一种特殊的抽象类,而抽象类又是一种特殊的类;
接口与抽象类相比有哪些不同:
1.使用interface 关键字来定义接口,而不使用abstract class等词;
2.接口中的方法必须全部是抽象方法,不能包含非抽象的方法;
所以在接口中无须使用abstract来修饰抽象方法,使用的话会报错;
3.接口中的成员属性必须全部为常量(不能包含变量);
4.所有的权限必须是公有的(public);
接口应用的一些细节:
1.接口可以继承接口(但是只有扩展的关系,没有覆盖;)
2.可以使用一个类来实现接口中的全部方法,也可以使用一个抽象类来实现接口中的部分方法;
3.类与接口、抽象类与接口其中包含实现(覆盖重写)抽象方法的关系,所以就不能使用extends关键字
(使用extends会报错),而是用implements来实现;
4.extends子类在PHP中继承时只能有一个父类,而一个子类在继承一个类的同时可以继承多个接口(先继承后实现)
*/
interface demo{
const NAME="刘仁";
const AGE=22;
const SEX="男";
function say();
function eat();
}
//接口继承接口
interface bibi{
function run();
}
interface demo1 extends demo{
function test();
}
//声明一个普通的类
class hello{
private $name;
function word(){
echo "Hello word<br>";
}
}
//类来实现接口
class demo2 implements demo1{
function say(){
echo "11111111111111<br>";
}
function eat(){
echo "2222222222222<br>";
}
function test(){
echo "testtesttesttest<br>";
}
}
//抽象类来实现接口中的部分方法,此处用extends也会报错
abstract class demo3 implements demo{
}
//继承一个类的同时可以继承多个接口,用","隔开;
class demo4 extends hello implements demo,bibi{
function say(){
echo "实现demo接口的说话方法!<br>";
}
function eat(){
echo "实现demo接口中的吃饭方法!<br>";
}
function run(){
echo "实现bibi接口中的跑步方法!<br>";
}
}
$obj= new demo4();
$obj->say();
$obj->eat();
$obj->run();
$obj->word();
?>
原文链接:https://blog.csdn.net/living_ren/article/details/75165450
本站声明:网站内容来源于网络,如有侵权,请联系我们,我们将及时处理。
还没有人抢沙发呢~