ITPub博客

首页 > IT职业 > IT职场 > PHP多态示例

PHP多态示例

IT职场 作者:jmctian 时间:2021-09-09 09:32:56 0 删除 编辑

//接口版的多态实例
//PCI接口
interface PCI{
    public function start();
    public function stop();
}

//主板类
class MainBoard{
    public function running(PCI $pci){
        $pci->start();
        $pci->stop();
    }
}


//声卡
class SoundCard implements PCI{
    public function start(){
        echo "声卡启动...
";
    }
    public function stop(){
        echo "声卡停止...
";
    }
}

//网卡
class NetworkCard implements PCI{
    public function start(){
        echo "网卡启动...
";
    }
    public function stop(){
        echo "网卡停止...
";
    }
}


//系统
$mb = new MainBoard();
$sc = new SoundCard();
$nc = new NetworkCard();

$mb->running($sc);
$mb->running($nc);

//抽象类版的多态实例
//PCI抽象类
// abstract class PCI{
//     public abstract function start();
//     public abstract function stop();
// }

// //主板类
// class MainBoard{
//     public function running(PCI $pci){
//         $pci->start();
//         $pci->stop();
//     }
// }


// //声卡
// class SoundCard extends PCI{
//     public function start(){
//         echo "声卡启动...
";
//     }
//     public function stop(){
//         echo "声卡停止...
";
//     }
// }

// //网卡
// class NetworkCard extends PCI{
//     public function start(){
//         echo "网卡启动...
";
//     }
//     public function stop(){
//         echo "网卡停止...
";
//     }
// }


// //系统
// $mb = new MainBoard();
// $sc = new SoundCard();
// $nc = new NetworkCard();

// $mb->running($sc);
// $mb->running($nc);

// //普通类版的多态实例
// //PCI类
// class PCI{
//     public function start(){}
//     public function stop(){}
// }

// //主板类
// class MainBoard{
//     public function running(PCI $pci){
//         $pci->start();
//         $pci->stop();
//     }
// }


// //声卡
// class SoundCard extends PCI{
//     public function start(){
//         echo "声卡启动...
";
//     }
//     public function stop(){
//         echo "声卡停止...
";
//     }
// }

// //网卡
// class NetworkCard extends PCI{
//     public function start(){
//         echo "网卡启动...
";
//     }
//     public function stop(){
//         echo "网卡停止...
";
//     }
// }


// //系统
// $mb = new MainBoard();
// $sc = new SoundCard();
// $nc = new NetworkCard();

// $mb->running($sc);
// $mb->running($nc);

来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/2963/viewspace-2810638/ ,如需转载,请注明出处,否则将追究法律责任。

下一篇: ExtAspNet v2.1.5
请登录后发表评论 登录
全部评论

注册时间:2019-08-13

  • 博文量
    0
  • 访问量
    429