深入理解面向对象三大特性——多态


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

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

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

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


//举例:创建一个电脑的接口
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);
原文地址:https://www.cnblogs.com/Itwonderful/p/5674708.html