PHP 面向对象高级:接口
一、抽象类和接口类的异同
对比:
| 抽象类 | 接口类 | 
|---|---|
| 类中至少有一个抽象方法,也可包含非抽象方法 | 类中全部为抽象方法,接口抽象方法为public,前面不用加abstract | 
| 可以使用各种成员属性 | 只能使用成员属性为常量const | 
共同点:
本身不能被实例化,必须继承或者引用
继承和引用后,抽象方法必须重载才能实例化
二、语法
抽象的关键字是abstract,而接口的关键字是interface
interface 接口名称{
    // 常量成员
    // 抽象方法
}
继承接口,使用implements关键字。
单继承:
class 类名 implements 接口一 {
    // 实现所有接口中的抽象方法
}
多继承:
class 类名 extends 父类名 implements 接口一, 接口二, ..., 接口 n {
    // 实现所有接口中的抽象方法
}
接口中所有的方法都是抽象方法
在使用 implements 关键字继承接口的同时,还可以使用 extends 关键字来继承一个类
接口不能进行实例化操作,所以要使用接口中的成员,就必须借助子类。
三、代码示例
<?php
interface Demo{
    const NAME = '强子';
    function fun1();
}
interface Test{
    public function fun2();
}
class Father{
    public function eating(){
        echo '吃饭的光头强'.PHP_EOL;
    }
}
class Study extends Father implements Demo,Test {
    public function fun1(){
        echo self::NAME.PHP_EOL;
    }
    public function fun2()
    {
        echo '写代码的光头强'.PHP_EOL;
    }
}
$obj = new Study();
$obj -> fun1();//输出:强子
$obj -> fun2();//输出:写代码的光头强
$obj -> eating();//输出:吃饭的光头强
echo Demo::NAME;//输出:强子
                        
                        
                        
                    
          
 PHP 社区 Wiki
    
            
            
                关于 LearnKu
              
                    
                    
                    
 
推荐文章: