您好,欢迎来到三六零分类信息网!老站,搜索引擎当天收录,欢迎发信息

【转】PHP透过接口实现多重继承

2024/2/27 19:29:28发布16次查看
【转】php通过接口实现多重继承
php类虽然是单继承的,但是可以通过其它特殊的方式实现多重继承,比如使用接口实现,只要把类的特征抽象为接口,并通过实现接口的方式让对象有多重身 份,通过这样就可以模拟多重继承了。
下面就是一个用接口模拟多重继承的例子,源代码如下:
?interface?userinterface{?// 定义user的接口 ??function?getname(); ?} ?interface?teacherinterface{?//teacher 相关接口 ??function?getlengthofservice(); ?} ?class?user?implements?userinterface?{?// 实现userinterface接口 ??private?$name?=?tom; ??public?function?getname(){ ?return?$this->name; ??} ?} ?class?teacher?implements?teacherinterface?{?// 实现teacherinterface接口 ??private?$lengthofservice?=?5;?//?工 龄? ??public?function?getlengthofservice(){ ?return?$this->lengthofservice; ??} ?} ?//?继承自user类,同时实现了 teacherinterface接口. ?class?graduatestudent?extends?user?implements?teacherinterface?{ ??private?$teacher?; ??public?function?__construct(){ ?$this->teacher?=?new?teacher(); ??}? ??public?function?getlengthofservice(){ ?return?$this->teacher->getlengthofservice(); ??} ?} ?class?act{ ??//注意这里的类型提示改成了接口类型 ??public?static?function?getusername(userinterface?$_user){ ?echo?name?is??.?$_user->getname()?.
; ??} ??//这里的类型提示改成了 teacherinterface类型. ??public?static?functiongetlengthofservice(teacherinterface?$_teacher){ ?echo?age?is??.$_teacher->getlengthofservice()?.
; ??} ?} ?$graduatestudent?=?new?graduatestudent(); ?act::getusername($graduatestudent); ?act::getlengthofservice($graduatestudent); ?//结果正如我们所要的,实现了有多重身份的一个对象. ??>?
示例运行结果如下:
name is tom
age is 5
该用户其它信息

VIP推荐

免费发布信息,免费发布B2B信息网站平台 - 三六零分类信息网 沪ICP备09012988号-2
企业名录 Product