zoukankan      html  css  js  c++  java
  • 接口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关键字

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

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

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

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

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

  • 相关阅读:
    19-background
    18-超链接导航栏案例
    17-文本属性和字体属性
    16-margin的用法
    15-浮动
    14-块级元素和行内元素
    13-标准文档流
    12-简单认识下margin
    11-border(边框)
    10-padding(内边距)
  • 原文地址:https://www.cnblogs.com/xiaowie/p/12302784.html
Copyright © 2011-2022 走看看