【代码总结】PHP面向对象之接口与多态性应用

概述:

PHP之支持单继承,也就是说每个类智能继承一个父类。当声明的新类继承抽象类实现模板以后就不能再有其他问题,为了解决这个问题,PHP引用了接口

---------------------------------------------------------------------------------------------------------------------------------------------

一、声明接口

1、接口中的方法,必须全是抽象方法(不能用不抽象的方法)

2、只能用const关键字声明为常量的成员属性

3、所有的权限必须是公有的(public)

4、声明接口不使用class,而是使用interface

<?php 
    interface One{   //声明一个接口使用interface关键字,One为接口名称
        const CONSTANT = 'CONSTANT value';   //在接口中声明一个常量成员属性,和在类中声明一样
        function fun1();   //在接口中声明一个抽象方法fun1()
        function fun2();   //在接口中声明一个抽象方法fun2()
    }
?>

二、接口间的继承

1、extends关键字继承(接口和接口-无覆盖)

  可以使用extends让一个接口去继承另一个接口,实现接口之间的扩展

 

<?php 
    interface One{   //声明一个接口使用interface关键字,One为接口名称
        const CONSTANT = 'CONSTANT value';   //在接口中声明一个常量成员属性,和在类中声明一样
        function fun1();   //在接口中声明一个抽象方法fun1()
        function fun2();   //在接口中声明一个抽象方法fun2()
    }
    //使用一个接口Two对接口One进行扩展
    interface two extends One{
        function fun3();    //在接口声一个抽象方法fun3()
    }
?>

2、使用一个类来实现接口(类和接口,抽象类和接口-有覆盖)

  类实现接口必须有子类把它所以的抽象方法全部实现才可以

  不要使用extends这个关键字,使用implements 相当于 extends  extends 继承(扩展),在这个PHP中,一个类只能有一个父类

<?php 
    interface One{   //声明一个接口使用interface关键字,One为接口名称
        const CONSTANT = 'CONSTANT value';   //在接口中声明一个常量成员属性,和在类中声明一样
        function fun1();   //在接口中声明一个抽象方法fun1()
        function fun2();   //在接口中声明一个抽象方法fun2()
    }
    //声明一个抽象类去实现接口One中的第二个方法
    abstract class Three implements One{   //只实现接口中的一个抽象方法
        function fun2(){
            //具体的实现内容由子类决定
        }
    }
    //声明一个类实现接口One中的全部抽象方法
    class Four implements one{
        //必须把One中的方法全部实现
        function fun1(){   //实现接口中的第一个方法
            //具体的实现内容由子类决定
        }
        function fun2(){   //实现接口中的第二个方法
            //具体的实现内容由子类决定
        }
    }
?>

三、多接口的继承

 实现方式: class 类名 implements 接口名,接口名2{ 实现体。。 }

四、多态性的应用

    *多态(使用方式):对于同一个方法,传入不同对象,实现了不同的效果,这个就是多态的意思,
      需要使用的技术:继承或实现,方法的覆盖(重写)。
    实例:
    主板:mainboard   PCI插槽(规范接口) 


    第三方生产
    声卡: soundCard
    网卡: networkCard
    
    设计模式:单例、单态设计模式

    http://localhost/.../index.php?m=类名&a=方法名&其他参数

    http://localhost/.../user/add.html

    http://news.sohu.com/web/123456.html

    http://news.sohu.com//find?id=123456

posted @ 2017-05-12 01:57  水清云影  阅读(240)  评论(0编辑  收藏  举报