文章目录[隐藏]
本篇文章是PHP中抽象类、接口和trait的一些内容,现在分享给大家,有需要的朋友也看以参考一下本篇文章的内容
抽象类
手册参考:http://php.net/manual/zh/language.oop5.abstract.php
定义:PHP 5 支持抽象类和抽象方法。定义为抽象的类不能被实例化。任何一个类,如果它里面至少有一个方法是被声明为抽象的,那么这个类就必须被声明为抽象的。且继承一个抽象类的时候,子类必须定义父类中的所有抽象方法(抽象类中可定义常量);
关键字 : abstract
<?phpabstract 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 实现了一种新的代码复用方式。
<?phptrait 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面向对象接口,继承,抽象类,析构,克隆等高级特性实例详解
初识 p*本文来源gaodai#ma#com搞@代~码^网+搞代gaodaima码hp 接口
PHP中Trait的特性及作用分享
以上就是抽象类,接口,trait 的详细内容,更多请关注搞代码gaodaima其它相关文章!