zoukankan      html  css  js  c++  java
  • 深入理解面向对象三大特性——多态


    多态,字面意思,就是多种形态

    比如:一种红酒,由不同的人来品尝,会有不同的感觉,这叫做多态;

            一个人用不同的方式来喝酒,也会有不同的后果,这也叫做多态。

    多态的原理:类都写好了,不要去修改它,只是在类外调用时更改参数,从而实现不同的结果(多态)


    //举例:创建一个电脑的接口
    interface Computer
    {
        public function version();
        public function work();
    }
    
    //创建一个笔记本的子类实现接口
    class Notecomputer implements Computer
    {
        public function version()
        {
            echo '笔记本';
        }
        public function work()
        {
            echo '可以运行Win7';
        }
    }
    
    //创建一个台式机的子类实现接口
    class Desktopcomputer implements Computer
    {
        public function version()
        {
            echo '台式机';
        }
        public function work()
        {
            echo '可以运行XP';
        }
    }
    
    //创建一个人的类
    class Person
    {
        public function doing($type)
        {
            echo '这个人的';
            $type->version();
            $type->work();
        }
    }
    
    $notecomputer = new Notecomputer();
    $desktopcomputer = new Desktopcomputer();
    $demo = new Person();
    $demo->doing($desktopcomputer);//输出这个人的台式机可以运行XP

    abstract class Computer
    {
        abstract public function version();
        abstract public function work();
    }
    
    class Notebook extends Computer
    {
        public function version()
        {
            echo '笔记本';
        }
        public function work()
        {
            echo '在运行Win7';
        }
    }
    
    class Desktopcomputer extends Computer
    {
        public function version()
        {
            echo '台式机';
        }
        public function work()
        {
            echo '在运行XP';
        }
    }
    
    class Person
    {
        public function _run($type)
        {
            echo '这个人的';
            $type->version();
            $type->work();
        }
    }
    
    $nc = new Notebook();
    $dc = new Desktopcomputer();
    $p = new Person();
    $p->_run($dc);
  • 相关阅读:
    [转]MYSQL5.7版本sql_mode=only_full_group_by问题
    [坑]Linux MySQL环境表名默认区分大小写
    [转]CentOS 7.3 安装MySQL
    [转]Oracle截取字符串相关函数
    服务相关
    CSRF攻击
    sqlalchemy——多表操作
    sqlalchemy——基本操作
    高可用——网站运行监控
    高可用——软件质量保证
  • 原文地址:https://www.cnblogs.com/Itwonderful/p/5674708.html
Copyright © 2011-2022 走看看