Correcting teacher:天蓬老师
Correction status:qualified
Teacher's comments:trait准确的说, 应该是提取类中的公共成员, 进行类级别的成员共享, 因为这部分共享成员实在不值得去创建父类或接口
// 面向对象编程分为三部
// 1.创建类
class Demo1
{
// 2.增加类成员
// 创建一个属性
public $name="qiqi";
public $age=18;
// 创建一个方法
public function getName()
{
// 实例化类
$name= new Demo1();
return $name->name;
}
}
// 3.访问类成员
$name= new Demo1();
// 访问类成员:方法
echo $name-> getName();
echo "<br>";
// 访问类成员:属性
echo $name-> age;
// 面向对象编程分为三部
// 1.创建类
class Demo2
{
// 2.增加类成员
// 创建一个属性
public $name="qiqi";
public $age=18;
// 创建一个方法
public function getName()
{
// 实例化类
// 当前类中引用自己;selg
// $name= new self();
// return $name->name;
return $this->name;
}
public function getAge()
{
// 实例化类
// $name= new self();
// return $name->age;
return $this->age;
}
}
// 3.访问类成员
$name= new Demo2();
// 访问类成员:方法
echo $name-> getAge();
echo "<br>";
// 访问类成员:属性
echo $name-> name;
// 1.创建类
class Demo3
{
// 2.增加类成员
// 创建一个属性
public $name;
public $age=18;
// 创建一个方法
public function getName()
{
// 实例化类
// 当前类中引用自己;selg
// $name= new self();
// return $name->name;
return $this->name;
}
public function __construct($name)
{
$this->name=$name;
}
}
// 3.访问类成员
$name= new Demo3("齐齐");
// 访问类成员:方法
echo $name-> getName();
echo "<br>";
// 访问类成员:属性
echo $name-> age;
// 类成员的访问控制
// 1.创建类
class Demo4
{
// 2.增加类成员
// 创建一个属性
// public $name;
private $name;
public $age=18;
// 创建一个方法
public function getName()
{
// 实例化类
// 当前类中引用自己;selg
// $name= new self();
// return $name->name;
return $this->name;
}
public function __construct($name)
{
$this->name=$name;
}
}
// 3.访问类成员
$name= new Demo4("齐齐");
// 访问类成员:方法
echo $name-> getName();
echo "<br>";
// 访问类成员:属性
echo $name-> name;
// 类的继承
// 1.创建类
class Demo5
{
// 2.增加类成员
// 创建一个属性
// public $name;
// private $name;
protected $name;
// 创建一个方法
public function getName()
{
// 实例化类
// 当前类中引用自己;selg
// $name= new self();
// return $name->name;
return "姓名:".$this->name;
}
public function __construct($name="qoiqi")
{
$this->name=$name;
}
}
// son继承Demo5类
class Son extends Demo5
{
public function getName()
{
// 实例化类
// 当前类中引用自己;self
// $name= new self();
// return $name->name;
// return $this->name;
return parent::getName()." 年龄:".$this->age;
}
// 自由属性增加
public $age=18;
public function __construct($name,$age=18)
{
parent::__construct($name);
$this->age=$age;
}
}
// 3.访问类成员
$name= new Demo5();
// 访问类成员:方法
// echo $name-> getName();
// echo "<br>";
// 访问类成员:属性
// echo $name-> name;
// 实例化子类
$son= new Son("张三",19);
// echo $son-> name;
echo $son-> getName();
// 创建trait方法集
trait Com
{
public function __construct($name="", $age="")
{
$this->name = $name;
$this->age = $age;
}
public function getInfo()
{
return $this->name." 年龄:".$this->age;
}
}
// 1.创建类
class Demo6
{
// 插入trait方法集
use Com;
// 2.增加类成员
public $name;
protected $age;
}
class Sub extends Demo6
{
// 子类属性
protected $times;
public function __construct($name="", $age="",$times="")
{
// 重写父类中的构造方法
parent::__construct($name, $age);
$this->times = $times;
}
// 重写父类中的getInfo方法
public function getInfo()
{
return "我是".$this->times.":".parent::getInfo();
}
}
// 3.访问类成员
$sub=new Sub("齐齐",18,"第十期");
echo $sub->getInfo();
class
,实例化类关键字new
,引用当前类关键字self
,引用当前类的实例关键字$this
,对象访问符->
.private
,只允许类中访问,类外和上下文都不允许。其次是protected
,除了能在当前类访问,还能再子类中访问。然后是public
,类中,类外,子类中都可以访问。extends
,子类除了父类所有满足条件的类成员外,还能重写扩展。引用当前父类的方法关键字parent
+范围i解析符::
,提高代码的可读性.trait
方法集小范围的突破php单继承,实现了代码的复用。声明用的类的方法,但不属于类,不能实例化。通过使用关键字use
插入类中使用。