【代码总结】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