• php面向对象特性四


     多态

    抽象类和接口都可以实现多态
    多态是指OOP能够根据类的上下文来重新定义或改变类的性质或行为,或者说接口的多种不同的实现方式即为多态。把不同的子类对象都当作父类来看,可以屏蔽不同子类对象之间的差异,写出通用的代码,做出通用的编程,以适用需求的不断变化。
    什么叫做多态,字面意思,多种形态
    一个动作由不同的人去执行,而产生不同的效果或结果,即为多态
    一个人通过不同的状态,去执行同一种动作,形成不同的结果,也可以称作为多态。
    对比
    // 园丁          剪             修理花草
    // 理发师        剪             理发
    // 总裁          剪             裁员
    
    // 张三 笔记本 运行 win7开机了 // 张三 台式机 运行 win8开机了

     下面的例子是以张三对不同电脑的相同动作,形成不同结果的实现

    // 定义电脑接口类
    interface Computer{
        // 定义电脑版本方法
        public function version();
        // 定义电脑工作
        public function work();
    }
    // 定义笔记本类
    class NoteComputer implements Computer{
        // 笔记本类实现版本方法
        public function version(){
            echo "笔记本DELL";
        }
        // 笔记本类工作
        public function work(){
            echo "启动了win7系统";
        }
    }
    //定义台式机类
    class DeskTopComputer implements Computer{
        // 台式机类版本
        public function version(){
            echo "台式机华硕";
        }
        // 台式机类工作
        public function work(){
            echo "启动了win8系统";
        }
    }
    // 定义一个人的类
    class Person{
        private $_name="张三";
        public function __construct()
        {
            echo "<meta charset=utf8>";
        }
        // 这个_run方法会持有对象的引用,对象引用可以通过使用接口定义的函数,实现不同功能
        // 也就是实现了
        /*
         *  // 张三         笔记本         运行         win7开机了
            // 张三         台式机         运行         win8开机了
         * */
        public function _run($type){
            echo $this->_name;
            $type->version();
            $type->work();
        }
    }
    // 多态的原理,就是把类都写好了,不要去修改他,只要在类外的调用参数的更改
    // 而最后的结果也会得到更改,那么这个就是多态
    //创建一个笔记本
    $noteComputer = new NoteComputer(); //创建一个台式机 $deskTopComputer = new DeskTopComputer(); //创建一个人 $person = new Person(); // 这种传递对象的方式,叫做对象引用的传递,也叫持有对象引用 $person->_run($deskTopComputer);
    // 这是很重要的内容
    //多态的原理,就是类都写好了,不要去修改它,只要在类外调用参数的更改 // 而最后的结果也会得到更改,那么这个就是多态
  • 相关阅读:
    现代C语言程序设计之数据存储
    Linux系统运维与架构设计之文件管理
    Linux系统运维与架构设计之系统基本使用
    Linux系统运维与架构设计之搭建运维环境
    Linux系统运维与架构设计之Linux概述
    Linux系统运维与架构设计技术栈
    架构师成长之道-C语言基础之C语言概述
    K3/Cloud树形单据体的rowId赋值
    K3违反内码唯一键约束
    K3修改字段名
  • 原文地址:https://www.cnblogs.com/anyux/p/8257136.html
Copyright © 2020-2023  润新知