zoukankan      html  css  js  c++  java
  • 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);
    // 这是很重要的内容
    //多态的原理,就是类都写好了,不要去修改它,只要在类外调用参数的更改 // 而最后的结果也会得到更改,那么这个就是多态
  • 相关阅读:
    POJ_1485_dp
    POJ_1376_bfs
    [noi1994]海盗
    [noi1755]Trie
    [luogu3733]八纵八横
    [noi1774]array
    [noi1773]function
    [noi1754]SA
    [noi1779]D
    [bzoj4873]寿司餐厅
  • 原文地址:https://www.cnblogs.com/anyux/p/8257136.html
Copyright © 2011-2022 走看看