PHP接口实现多重继承的实例分享

发布时间:2020-08-08编辑:脚本学堂
本文介绍下,在php编程中通过接口实现多重继承的方法,通过实例来学习php继承的应用,有需要的朋友参考下吧。

本文主要内容:
php接口实现多重继承。

说明:
PHP类是单继承的,不过可以通过其它特殊的方式实现多重继承,比如使用接口实现,只要把类的特征抽象为接口,并通过实现接口的方式让对象有多重身份,如此便可以模拟多重继承。

这里分享一个用接口模拟多重继承的例子:
 

复制代码 代码示例:
<?
/**
* php接口实现多重继承
* edit: www.jb200.com
*/
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() ."<br>"; 
 } 
 //类型提示改成了 TeacherInterface类型. 
 public static function  getLengthOfService(TeacherInterface $_teacher){ 
  echo "Age is " .$_teacher->getLengthOfService() ."<br>"; 
 } 

$graduateStudent = new GraduateStudent(); 
Act::getUserName($graduateStudent); 
Act::getLengthOfService($graduateStudent); 
//实现多重身份的一个对象. 
?>

示例结果:
Name is tom
Age is 5