博客列表 >用trait实例实现代码复用-2018年5月8日14点

用trait实例实现代码复用-2018年5月8日14点

旺小舞的博客
旺小舞的博客原创
2018年05月08日 14:24:24703浏览

1.trait是为单继承语言量身定制的代码复用机制;

2.之前可以通过函数或类来实现代码复用;

3.trait可以简单的理解为一个类方法的集合,工作在父类与子类之间;

4.但是trait不仅仅局限于方法集合,还支持抽象,静态与属性;

5.当前类成员会覆盖trait类成员,而trait中的成员,又可以覆盖同名类成员

6.重要提示:trait不是类,不能实例化,切记切记

示意图:

5-7.jpg

代码:

实例

<?php 
/**
 * 1,trait 是为单继承语言量身定制的代码复用机制
 * 2,trait 简单理解为一个方法集合
 * 3,trait可以看做是一个特殊的类,但不嫩被实例化,仅允许被类调用
 */
header("content-type:text/html;charset=utf-8");
class Person
{
	protected $name;
	public function __construct($name='hyman')
	{
		$this->name=$name;
	}
	public function study($course='php')
	{
		return $this->name.'在学习'.$course;
	}
}



trait Course
{
	//trait中可以有属性
	public $friend='chris';
	public function sport($name='running')
	{
		 $this->name.$this->friend.'在学习'.$name;

	}
	//抽象静态方法
	abstract public static function hobby($name);

	//和Person类同名的方法
	public function study($course ='java')
	{
			 return $this->name.'在学习'.$course;
	}
}

//有了一个父类,还有一个trait类
class Student extends Person
{
	//导入traitl类
	use Course;
	protected $name='小军';
	public static function hobby($name)
	{
		return $name;
	}
	public function study($course='python')
	{
		return $this->name.'在学习'.$course;
	}
}

//实例化student
$student = new Student();
echo $student->study();

运行实例 »

点击 "运行实例" 按钮查看在线实例


声明:本文内容转载自脚本之家,由网友自发贡献,版权归原作者所有,如您发现涉嫌抄袭侵权,请联系admin@php.cn 核实处理。
全部评论
文明上网理性发言,请遵守新闻评论服务协议