欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

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

程序员文章站 2024-04-04 22:08:05
...

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

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

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

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

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

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

示意图:

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

代码:

实例

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

运行实例 »

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