PHP抽象类与接口的区别

PHP抽象类与接口的区别

抽象类:
用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();