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

  • 相关阅读:
    双端队列广搜
    多源bfs
    leetcode刷题-67二进制求和
    leetcode刷题-66加一
    leetcode刷题-64最小路径和
    leetcode刷题-62不同路径2
    leetcode刷题-62不同路径
    leetcode刷题-61旋转链表
    leetcode刷题-60第k个队列
    leetcode刷题-59螺旋矩阵2
  • 原文地址:https://www.cnblogs.com/newmiracle/p/13048161.html
Copyright © 2011-2022 走看看