zoukankan      html  css  js  c++  java
  • 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身份
  • 相关阅读:
    onkeyup事件
    asp.net学习视频资料地址链接
    企业站新闻信息的后台功能开发心得(1)
    js实现切换导航
    jquery实现上拉加载更多
    css设置input框没有边框,选中时取消背景色
    使用js修改url地址参数
    ubantu 修改hosts文件
    git的使用
    ubantu 16.04 菜单栏的位置变换
  • 原文地址:https://www.cnblogs.com/wghao/p/6101087.html
Copyright © 2011-2022 走看看