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


     1.UML类图:

    2.PHP代码:

    <?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身份
  • 相关阅读:
    C语言中for循环的使用
    详解C语言的main函数
    计算机语言的发展(the history of computer's language)
    hdu 1001
    hoj 1002
    hdu 1000
    POJ 1000(水题)
    hoj 1001
    code hunt题解(1)
    《C和指针》学习笔记(3)
  • 原文地址:https://www.cnblogs.com/wghao/p/6101087.html
Copyright © 2020-2023  润新知