您好,欢迎来到三六零分类信息网!老站,搜索引擎当天收录,欢迎发信息
免费发信息

traits与interfaces有什么区别?

2024/4/19 13:42:12发布4次查看
traits与interfaces的区别是:1、trait类似于include,可以用use放在类中间,定义的方法作为class的一部分,本身不能直接实例化;2、interface里面的方法都是虚拟的,需要在继承的时候对这些方法进行重定义。
traits与interfaces的区别是:
1、trait看上去更像是为了代码的复用而写的一个小插件,它类似于include,可以用use放在类中间,让trait里面定义的方法作为class的一部分,本身不能直接实例化。
2、interface里面的方法都是虚拟的,需要在继承的时候对这些方法进行重定义。也就是说,方法是说明性质的,并没有实际操作,而你在继承的时候,需要实现这些方法,不然就会出错,而且不能缺失。interface经常用于架构的时候,对一个实例所拥有的属性和方法进行抽象定义。简单来讲类似一个协议,是老板下达的任务。你要继承的话,必须满足这个协议,也就是完成老板下达的任务。
<?phptrait mytrait{ protected $var = 'mytrait_var'; protected $var1 = 'mytrait_var'; function __construct() { echo $this->var."</br>"; } function a() { echo "a"."</br>"; }} interface myinterface{ function __construct(); function b();} abstract class myabstract{ protected $var2 = 'myabstract_var'; use mytrait; function b() { echo "b"."</br>"; }} class myclass extends myabstract implements myinterface{ protected $var3 = 'myclass_var'; function c() { echo "c"."</br>"; }} $class = new myclass();$class->a();$class->b();$class->c();
以上代码中,myabstract中的function b()也可以放在myclass中,或者由myabstract实现接口myinterface
相关学习推荐:php编程从入门到精通
以上就是traits与interfaces有什么区别?的详细内容。
该用户其它信息

VIP推荐

免费发布信息,免费发布B2B信息网站平台 - 三六零分类信息网 沪ICP备09012988号-2
企业名录