• 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:抽象类和接口都不能直接实例化  不用多继承的情况下 抽象类比较好用

  • 相关阅读:
    代码审计中的XSS反射型漏洞
    PHP 代码审计代码执行注入
    4.代码审计之代码注入
    3.代码审计之 命令注入
    2.代码审计之超全局变量
    spring, spring mvc, mybatis整合文件配置详解
    StringUtils方法
    主键与外键
    MySQL面试题
    spring面试题
  • 原文地址:https://www.cnblogs.com/newmiracle/p/13048161.html
Copyright © 2020-2023  润新知