您的位置:首页 > 编程语言 > PHP开发

PHP以接口方式实现多重继承(完全模拟)--学习笔记

2016-11-25 12:08 846 查看
[b] 1.UML类图:[/b]



[b]2.PHP代码:[/b]

<?php

/**
* Created by PhpStorm.
* User: andy
* Date: 16-11-23
* Time: 下午7:57
*/
interface User
{
function getName();
}

interface Teacher
{
function getWorkYear();
}

class Student implements User
{
private $name = 'lisi';

function getName()
{
// TODO: Implement getName() method.
echo 'Student name is ' . $this->name . '<br />';
}
}

class GraduateTeacher implements Teacher
{
private $work_year = 2;

function getWorkYear()
{
// TODO: Implement getWorkYear() method.
echo 'Teacher work year is ' . $this->work_year . '<br />';
}
}

class GraduateStudent extends Student implements Teacher
{
private $teacher;

public function __construct()
{
$this->teacher = new GraduateTeacher();
}

function getWorkYear()
{
$this->teacher->getWorkYear();
}
}

class Test
{
static function getName(User $student)
{
$student->getName();
}

//当Teacher改成GraduateTeacher,到后面代码行的“Test::getWorkYear($lisi);”就会报错
static function getWorkYear(Teacher $teacher)
{
$teacher->getWorkYear();
}
}

$lisi = new GraduateStudent();
$lisi->getName();
$lisi->getWorkYear();

echo '<hr />';
Test::getName($lisi);
Test::getWorkYear($lisi); //这里不会报错,因为$lisi所属的类GraduateStudent,实现了Teacher的接口,相当于Teacher身份
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐