抽象类,接口,trait

php教程评论425 views阅读模式

本篇文章是PHP中抽象类、接口和trait的一些内容,现在分享给大家,有需要的朋友也看以参考一下本篇文章的内容

抽象类

手册参考:http://php.net/manual/zh/language.oop5.abstract.php

定义:PHP 5 支持抽象类和抽象方法。定义为抽象的类不能被实例化。任何一个类,如果它里面至少有一个方法是被声明为抽象的,那么这个类就必须被声明为抽象的。且继承一个抽象类的时候,子类必须定义父类中的所有抽象方法(抽象类中可定义常量);

关键字 : abstract

<?php
abstract class AbstractClass
{
    const NAME='张三';
 // 强制要求子类定义这些方法
    abstract protected function getValue();
    abstract protected function prefixValue($prefix);

    // 普通方法(非抽象方法)
    public function printOut() {
        print $this->getValue() . "\n";
    }
}

class ConcreteClass1 extends AbstractClass
{
    protected function getValue() {
        return "ConcreteClass1".self::NAME;
    }

    public function prefixValue($prefix) {
        return "{$prefix}ConcreteClass1";
    }
}


$class1 = new ConcreteClass1;
$class1->printOut();
echo $class1->prefixValue('FOO_') ."\n";

接口

关键字 : interface

interface test1{

  function say();
}
interface test2{
  function see();

}

//接口继承接口 (继承接口时使用extends关键字)

interface test3 extends test1,test2
{
    function sleep();

}

//类实现接口(实现接口时使用 implements关键字)

class test implements test1,test2{
  public function say(){}
  public function see(){}
  public function sleep()
  {
    echo '休息';
  }

}
//接口中只能有抽象方法(不能定义常量,不能有构造方法,不能有普通方法),且接口类中所有未实现的方法需要在子类中全部实现

Trait 实现多继承

参考地址 https://www.cnblogs.com/smallrookie/p/6516010.html

定义:从PHP 5.4.0 开始 PHP 实现了一种新的代码复用方式。

<?php
trait A {
    public function smallTalk() {
        echo 'a';
    }
    public function bigTalk() {
        echo 'A';
    }
}
trait B {
    public function smallTalk() {
        echo 'b';
    }
    public function bigTalk() {
        echo 'B';
    }
}
 
class Aliased_Talker {
    use A, B {
        B::smallTalk insteadof A;  //使用B类的smallTalk方法(替换A方法)
        A::bigTalk insteadof B;
        B::bigTalk as talk;//重命名 B类中的bigTalk方法重命名为talk方法
    }
}

$obj = new Aliased_Talker;
$obj->smallTalk(); //b
$obj->bigTalk(); //A
$obj->talk();//B
//trait不能实例化,不能有常量

相关推荐:

php面向对象接口,继承,抽象类,析构,克隆等高级特性实例详解

初识 php 接口

PHP中Trait的特性及作用分享

以上就是抽象类,接口,trait 的详细内容,更多请关注php教程网其它相关文章!

企鹅博客
  • 本文由 发表于 2020年8月14日 06:39:27
  • 转载请务必保留本文链接:https://www.qieseo.com/247009.html

发表评论