PHP 面向对象的特性 抽象类和接口

PHP 面向对象的特性 抽象类和接口

先看下普通的类的实现和重写 

<?php
header("Content-type:text/html;charset=utf-8");

class P
{
    public $age;
    public $name = "我叫张三";
    public function __construct()
    {
        $this->age = '初始化';
    }
    public function action()
    {
        return '我要吃饭';
    }

}

class C extends P
{
    public $age;
    public function __construct()
    {

        $this->age = '重新初始化';

        //如果想继续用父类的构造函数 不重写
        // parent::__construct();
    }

    public $name = "其实我是李四";
    public function action()
    {
        return '其实我要睡觉了';
    }

}




$o = new P;

echo $o->age;
echo '</br>';
echo $o->name;
echo '</br>';
echo $o->action();

echo '</br>';
echo '</br>';
echo '</br>';

$o = new C;

echo $o->age;
echo '</br>';
echo $o->name;
echo '</br>';
echo $o->action();

然后说下接口(作用就是 写的类必须实现 接口中的方法 其实就是实现类方法的规范)

<?php
header("Content-type:text/html;charset=utf-8");

interface P
{
public function action();

}

class C implements P
{
public function action()
{
return '我要睡觉了';
}

}

class A extends C
{

public function action()
{
return '其实我要睡觉了';
}
}

$o = new C;

echo $o->action();

echo '</br>';
echo '</br>';

$o = new A;

echo $o->action();

 抽象类 你可以把他当成个类使用(他的abstract方法必须实现 跟interface一样)

<?php
header("Content-type:text/html;charset=utf-8");

abstract class P
{
    abstract public function action();
    public function action11()
    {
        return '1111111';
    }
}
class C extends P
{
    public function action()
    {
        return '啊啊啊啊';
    }
    public function action11()
    {
        return '3333333333';
    }

}

$o = new C;

echo $o->action11();

echo '</br>';
echo '</br>';

 ps:抽象类和接口都不能直接实例化  不用多继承的情况下 抽象类比较好用

原文地址:https://www.cnblogs.com/newmiracle/p/13048161.html