类的三大特性
继承:可以让某个类型的对象获得另一个类型的对象的属性和方法
封装:指将客观事物抽象成类,每个类对自身的数据和方法实行保护
多态:指同一个实体同时具有多种形式,它主要体现在类的继承体系中
extends
关键词继承父类
class Teacher{
public $name;
public $school;
// 构造方法
public function __construct($name, $school){
$this->name = $name;
$this->school = $school;
}
public function fun1(){
echo '姓名:小红,学校:PHP教程<hr/>';
}
public function fun2(){
return '姓名:小红,学校:PHP教程<hr/>';
}
public function fun3(){
// 在类中使用伪变量: "$this" 引用当前类的成员变量
return '姓名:'.$this->name.',学校:'.$this->school.'<hr/>';
}
public function fun4(){
// 在类中使用伪变量: "$this" 引用当前类的成员方法
return $this->fun3();
}
// 析构方法
public function __destruct(){
echo '类执行完毕,要关闭了';
}
}
// 子类代码复用
class PHPTeacher extends Teacher{
}
// 实例化
$obj = new PHPTeacher('小明','PHP教程');
echo $obj->fun3();
public
默认的, 关键词定义类内、类外、子类都可见
protected
关键词定义类内、子类可见,类外不可见
private
关键词定义类内可见, 子类、类外不可见
class Teacher{
protected $name;
private $school;
// 构造方法
public function __construct($name, $school){
$this->name = $name;
$this->school = $school;
}
protected function fun1(){
echo '姓名:小红,学校:PHP教程<hr/>';
}
private function fun2(){
return '姓名:小红,学校:PHP教程<hr/>';
}
public function fun3(){
// 在类中使用伪变量: "$this" 引用当前类的成员变量
return '姓名:'.$this->name.',学校:'.$this->school.'<hr/>';
}
public function fun4(){
// 在类中使用伪变量: "$this" 引用当前类的成员方法
return $this->fun3();
}
// 析构方法
public function __destruct(){
echo '类执行完毕,要关闭了';
}
}
// 子类代码复用
class PHPTeacher extends Teacher{
public function fun5(){
$this->fun1();
}
public function fun6(){
$this->fun2();
}
public function fun7(){
return $this->name;
}
public function fun8(){
return $this->school;
}
}
// 实例化
$obj = new Teacher('小明','PHP教程');
echo $obj->fun1();
echo $obj->fun2();
echo $obj->name;
echo $obj->school;
$obj2 = new PHPTeacher('小明','PHP教程');
echo $obj2->fun1();
echo $obj2->fun2();
echo $obj2->fun5();
echo $obj2->fun6();
echo $obj2->fun7();
echo $obj2->fun8();
实现多态的前提是要先继承,在重写父类方法
class Teacher{
protected $name;
private $school;
// 构造方法
public function __construct($name, $school){
$this->name = $name;
$this->school = $school;
}
protected function fun1(){
echo '姓名:小红,学校:PHP教程<hr/>';
}
private function fun2(){
return '姓名:小红,学校:PHP教程<hr/>';
}
public function fun3(){
// 在类中使用伪变量: "$this" 引用当前类的成员变量
return '姓名:'.$this->name.',学校:'.$this->school.'<hr/>';
}
public function fun4(){
// 在类中使用伪变量: "$this" 引用当前类的成员方法
return $this->fun3();
}
// 析构方法
public function __destruct(){
echo '类执行完毕,要关闭了';
}
}
// 子类代码复用
class PHPTeacher extends Teacher{
public function fun5(){
$this->fun1();
}
public function fun6(){
$this->fun2();
}
public function fun4(){
return '我是重写的方法';
}
}
$obj2 = new PHPTeacher('小明','PHP教程');
echo $obj2->fun4();