抽象类是一种特殊的类,接口是一种特殊的抽象类。
1、抽象类和接口中都有抽象方法。
2、抽象类和接口都不能创建实例对象。
3、抽象类和接口的使用意义相同:定义一种规范。
接口和抽象类相比,特殊在哪里?
1、接口中的方法必须全部是抽象方法。不能有不是抽象方法的方法。所以在接口中的抽象方法不需要使用abstract。
2、接口中的成员属性必须是常量,不能有变量。
3、所有的权限必须是公有的(public)。
4、声明接口,不使用class,而是interface。
接口的使用细则
1、接口可以使用extends,让一个接口继承另一个接口。
接口与接口,只是扩展抽象方法,没有覆盖(重写、实现)的关系。
2、可以使用一个类来实现接口中的全部方法,也可以使用一个抽象类来实现接口中的部分方法。
类与接口、抽象类与接口,有覆盖(重写、实现)的关系,实现接口中的一些或者全部的抽象方法。
3、有覆盖的关系,不能使用extends关键字,只能使用implements关键字。
extends,继承、扩展的意思,在PHP中只能有一个父类。
4、一个类可以在继承一个父类的同时,使用implements实现多个接口。(先继承再实现)
PHP实现多个接口,使用逗号分隔即可。
interface Demo {
const name = 'xxx';
const age = 26;
function test();
function test2();
}
interface Test extends Demo {
function test3();
}
interface Abc {
function test5();
}
class World {
function test4() {}
}
class Hello extends World implements Test,Abc {
function test(){ echo 'test
';}
function test2(){}
function test3(){}
function test4(){}
function test5(){}
}
$h = new Hello;
$h->test();
/*
打印结果:
test
*/