抽象类:
用abstract声明
一个抽象类里面可以拥有多个抽象方法,也可以拥有多个非抽象方法。但是抽象方法必须被子类重写
抽象的类不能被实例化
抽象类使用extends继承
一个类只能继承一个抽象类
抽象类中的方法可以用public,protected,private修饰
abstract class Demo{
abstract function show($n='abc');
abstract function test();
function say(){
echo "青山不改绿水长流,你还会回来的!!";
}
}
class Son extends Demo{
function show($abc=10){
}
function test(){}
}
$s=new Son;
$s->say();
接口:
用interface声明
接口没有构造函数
一个接口可以被一个类实现(implements),该类必须全部实现了接口中所有的接口方法
一个类可以继承多个接口
一个类除了继承外也可以实现接口。
一个类是先继承后实现接口
接口中的方法默认为public
interface Demo{
function show();
function test();
}
interface Demo2 extends Demo{
function show2();
}
class Father {
function say(){
echo '说了';
}
function show(){
}
}
class Son extends Father implements Demo2{
function show(){
}
function test(){
}
function show2(){
}
}
$s=new Son;
$s->say();