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

  • 相关阅读:
    ROXFiler 2.6
    ubuntu下lxr的运用
    NTFS3G-Linux 的 NTFS 驱动步骤
    Songbird 0.2.5 Final
    ePDFView:一个轻量的 PDF 文档阅读东西
    Gmail Notifier:又一个 Gmail 邮件通知法式
    Hybrid Share-文件分享软件
    Dolphin:KDE 中的文件管理器
    文泉驿点阵宋体 0.8(嬴政)正式公布
    KDE 4 Kludge 发布宣布
  • 原文地址:https://www.cnblogs.com/newmiracle/p/13048161.html
Copyright © 2011-2022 走看看