zoukankan      html  css  js  c++  java
  • 接口interface,接口继承implements

    php中,只支持从一个类继承,不支持从两个或者更多的类同时继承。从两个或者两个以上的类继承的能力被称为多重继承。php在设计上是禁止这种功能的。原因在于,避免多个类带来的复杂性。当发现需要从两个或者更多类继承时,可以将父类的方法拆开,然后使用接口来达到相同的目的。

    接口虽然与类相似,但是,接口中只能包含方法原型,而不能包含任何完整的定义方法。这样可以防止使用抽象类时可能出现的方法冲突,从而能在给定的实现类上使用多个接口。然而,既然接口不能定义具有完整实现的方法,因此如果我们希望为继承者提供默认功能,就必须单独提供一个非抽象的基类。

    说明:基类,就是父辈、祖辈类等;派生类,就是子类、孙子类等。

    1.接口定义

    使用关键字:interface

    //定义一个接口ISpeedInfo
    interface ISpeedInfo{
       public function getMaximumSpeed();
    }
    

    2.接口的使用

    使用关键字:implements

    //定义一个扩展类FastCar,并调用接口ISpeedInfo
    Class FastCar extends Car implements ISpeedInfo{
        function getMaximumSpeed(){
            return 150;
        }
    }
    

    说明:扩展类FastCar,知道ISpeedInfo接口;而Car基类并不知道有ISpeedInfo接口。

    注意:当我们希望调用两个或者两个以上的接口时,采用逗号分隔

    Class FastCar extends Car implements ISpeedInfoA,ISpeedInfoB,ISpeedInfoC{}

    3.调用接口中的方法

    //调用
    $a=new FastCar();
    echo $a->getMaximumSpeed();
    

     =======完整代码======

     1 <?php 
     2 //定义一个接口ISpeedInfo
     3 interface ISpeedInfo{
     4    public function getMaximumSpeed();
     5 }
     6 
     7 //定义一个抽象类Car
     8 class Car{
     9     //任何非抽象方法
    10 }
    11 
    12 //定义一个扩展类FastCar,并调用接口ISpeedInfo
    13 Class FastCar extends Car implements ISpeedInfo{
    14     function getMaximumSpeed(){
    15         return 150;
    16     }
    17 }
    18 
    19     //调用
    20     $a=new FastCar();
    21     echo $a->getMaximumSpeed();
    22 ?>
    View Code
  • 相关阅读:
    row_number() over(partition by的用法
    java基础之--动态代理
    Java中主要有一下三种类加载器;
    HBase基本shell命令
    IntelliJ IDE 基础经验备案 四-查找快捷键
    Docker:5 扩展学习之安装mysql并且将数据挂载到本地磁盘
    Docker:4 扩展学习之修改docker容器配置
    nginx安装部署《简单版》
    Redis基础学习: 与外部交互的数据类型
    Redis基础学习: 内部数据结构
  • 原文地址:https://www.cnblogs.com/andy9468/p/4238558.html
Copyright © 2011-2022 走看看