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);
  • 相关阅读:
    核心编程(第七章)
    核心编程答案(第六章)
    spring aop配置切点执行了两次的原因
    spring AOP使用 xml配置
    有关于时间戳的pgsql操作
    sql 中 limit 与 limit,offset连用
    学习大数据笔记day1
    Java实现各种排序
    关于java洗牌发牌小程序
    flex.css
  • 原文地址:https://www.cnblogs.com/Itwonderful/p/5674708.html
Copyright © 2011-2022 走看看