Blogger Information
Blog 55
fans 0
comment 1
visits 42194
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template
用trait实例实现代码复用-2018年5月8日14点
旺小舞的博客
Original
702 people have browsed it

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();

运行实例 »

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


Correction status:qualified

Teacher's comments:
Statement of this Website
The copyright of this blog article belongs to the blogger. Please specify the address when reprinting! If there is any infringement or violation of the law, please contact admin@php.cn Report processing!
All comments Speak rationally on civilized internet, please comply with News Comment Service Agreement
0 comments
Author's latest blog post