• 接口interface


    思考:在大型项目中,如果想要规定某些类必须有某些方法,我们可以使用丞相类来进行规范吗?

    引入:抽象类的目的就是用来规范一些共性子类的结构,必须实现某些指定的方法的,在php还有一种专用来规范类内容实现方法的结构叫做接口。

    接口 interface【掌握】

    定义:接口,使用interface关键字定义,专门用来规范一些共性类必须实现的方法

    接口定义:使用interface关键字,后跟接口名字{与类结构一样},接口不是类,不可以被实例化

    <?php
    
    // 定义接口
    interface show{
    
    }
    
    new show();            //致命错误  接口不能实例化

    接口实现:接口时用来规范类必须完成的事情,所以接口只能被类实现:implements

    <?php
    
    // 定义接口
    interface show{
    
    }
    
    // 实现接口
    class posen implements show{}

    接口成员:接口中只能定义公有抽象方法和接口常量

    <?php
    
    // 定义接口
    interface show{
    
        //接口成员
        const NAME="杜伟";
        public function add();             //在接口中声明的方法,默认都会添加abstract关键字
    
        //其他内容,不能有成员
        // public $age;                      接口中不能有属性和成员
        // public static $count;             接口中不能有静态属性和成员    
    }
    
    // 实现接口
    class posen implements show{
        // 实现接口方法
        public function add(){
            echo  __LINE__;
        }
    }
    echo posen::NAME; //常量输出
    //抽象类实现接口中的抽象方法 abstract class wman implements show{ }

    实现接口的类成员,不允许重写接口中的常量,不允许增加接口方法的控制权

    <?php
    
    // 定义接口
    interface show{
    
        //接口成员
        const NAME="杜伟";
        public function add();             //在接口中声明的方法,默认都会添加abstract关键字
    
        //其他内容,不能有成员
        // public $age;                      接口中不能有属性和成员
        // public static $count;             接口中不能有静态属性和成员    
    }
    
    // 实现接口
    class posen implements show{
        // 重写接口中的常量
        //const NAME="假名";             //报错 :不允许重写接口中的常量
        // 实现接口方法
        private function add(){
            echo  __LINE__;            //错误:接口方法不允许使用其他访问修饰限定符,必须使用public
        }
    }

    接口可以继承接口:extends,而且接口可以多继承接口

    <?php
    
    interface show{
    
        public function getname();
    }
    
    interface add{
    
        public function getage();
    
    }
    // 单继承
    interface line extends getname{}
    
    //多继承
     interface count extends add ,show{}

    总结:

      接口是使用interface关键字定义,与类结构相似

      接口只能被类实现implements,方法默认自带abstract关键字

      接口成员只能有两种,接口常量和公有的抽象方法(没有方法体)

      类实现接口的时候,必须实现接口中所有的抽象方法(或者以抽象类实现)

      接口中的成员不能被实现接口类进行重写(接口常量)或权限更高(受保护或私有化接口方法)

      接口可以继承接口,而且可以多继承

      接口时在更大型的项目中,为了保证底层的实现而设定的规范,通常是抽象类实现接口,增加必要成员,然后让实际业务类去继承抽象类

  • 相关阅读:
    String.Format( )用法
    Androidstudio中添加jar包的方法
    Qt SQLite 批量插入优化(SQLite默认将每条语句看成单独的事务)good
    aravel 之父 Taylor Otwell :我是如何工作的
    【码云周刊第 22 期】GO :互联网时代的 C 语言!
    2017 JavaScript 开发者的学习图谱
    【码云周刊第 29 期】构建高性能微服务架构
    SOA和微服务
    NET Core Web 应用部署到 Docker 中运行
    Expression Trees
  • 原文地址:https://www.cnblogs.com/xiaowie/p/12302784.html
Copyright © 2020-2023  润新知