php中的抽象类和抽象方法

PHP中的抽象类不能实例化,不能使用new,抽象类使用abstract关键字描述。一个类中只要有一个抽象方法,那么这个类就是抽象类,抽象类中的抽象方法,必须在子类中全部实现

<?php

namespace _0802;

// 抽象类


class Person1
{
    protected $name;

    public function __construct($name = 'peter zhu')
    {
        $this->name = $name;
    }

    public function getName()
    {
        return $this->name;
    }

    public function setName($value)
    {
        $this->name = $value;
    }
}

$person = new Person1();
echo '我的姓名是: ' . $person->getName(), '<br>';
$person->setName('朱老师');
echo '我的姓名是: ' . $person->getName(), '<br>';
echo '<hr>';

// 创建出一个抽象类
// 1. 不能实例化, 不能用new
// 2. 类中的抽象方法, 必须在子类全部实现
abstract class Person2
{
    protected $name;

    public function __construct($name = 'peter zhu')
    {
        $this->name = $name;
    }

    public function getName()
    {
        return $this->name;
    }

    // 这个方法没有实现的过程, 变成了一个抽象方法
    abstract public function setName($value);
}

// 子类来扩展/ 实现一个抽象类
class Sub extends Person2
{
    // 构造方法不会自动继承
    public function __construct($name = 'peter zhu')
    {
        parent::__construct($name);
    }

    // 在子类中将抽象类中的一个抽象方法setName()具体实现一下
    public function setName($value)
    {
        $this->name = $value;
    }
}

$sub = new Sub('猪哥');

echo 'php中文网的创始人是: ' . $sub->getName(), '<br>';

// 调用子类中实现的抽象方法setName()
$sub->setName('朱老师');
echo 'php中文网的讲师: ' . $sub->getName(), '<br>';

  

posted @ 2019-10-24 20:23  专门写bug  阅读(530)  评论(0编辑  收藏  举报