总结:
一、类中的方法、self、$this
1、类中的变量称为属性,类中的函数称为方法。
2、在类中的方法实例化类可以使用 new self(); self为当前类的引用。
3、$this 是当前对象的引用,是一个伪变量。$this不需要创建,可以直接使用。
4、类中的方法尽量用return返回需要的内容。
二、类的构造函数
1、构造函数是PHP中的一个魔术方法,构造函数的形式:
public function __construct(参数列表){
}
2、PHP中如果变量没有初始化,其为NULL
3、魔术方法:以__开头的方法是魔术方法,魔术方法不需要用户调用,他由PHP根据某种条件自动触发。
4、构造函数的作用:
(1)初始化对象
(2)完成对象创建是的自动化操作
三、类的继承
1、类继承的关键字:extends
2、类继承的作用:代码复用
3、类继承的三个应用:
(1)代码复用:子类可以使用父类中的代码(public和protected修饰的)
(2)功能拓展:子类中可以添加属性和方法,拓展父类。
(3)方法重写:子类可以重写父类中的方法。
4、子类调用父类的方法可以使用:parent::方法名。
四、对象成员的访问控制:
1、对象成员有三种访问控制符:public、protected、private
2、三种访问控制符的权限:
(1)public修饰的成员在类中、类外、子类中均可访问。
(2)protected修饰的成员在类中、子类中均可访问,类外不可以访问。
(3)private修饰的成员仅在类中可以访问,类外、子类中均不可访问。
作业:
1:子类的三个应用场景:
实例
<?php // 继承的三个用途: class Person{ public $name; public $age; public $sex; public function __construct($name,$age,$sex) { // 构造函数的作用1:初始化对象 $this->name=$name; $this->age=$age; $this->sex=$sex; // 构造函数的作用2:完成对象创建时的自动化操作 echo $this->getInfo(); } public function getInfo(){ // 函数中尽量不要使用echo,把需要的内容return出去 return $this->name . '<br>' . $this->age . '<br>' . $this->sex . '<hr>'; } } // 1:复用父类的代码 class Man extends Person{ } $man=new Man('小黑',32,'男'); // 2、拓展父类功能 class Women extends Person{ public $wight; public function __construct($name,$age,$sex,$wight) { //使用parent::__construct(参数);可以复用父类的构造函数 parent::__construct($name,$age,$sex); $this->wight=$wight; } public function dieted(){ if($this->sex==='女'){ if($this->wight>50){ return $this->name . '体重' . $this->wight . '斤,要减肥了。'; } else{ return $this->name . '体重' . $this->wight . '斤,身材很棒。'; } } else{ return '我们之为女性服务。'; } } } $women=new Women('小红',23,'女',51); echo $women->dieted(); echo '<hr>'; // 3、重写父类中的方法 class FatWomen extends Women{ public function dieted(){ if($this->sex==='女'){ if($this->wight>50&&$this->wight<=60){ return $this->name . '体重' . $this->wight . '斤,要减肥了。' . '减肥套餐:¥998'; } else if($this->wight>60&&$this->wight<=80){ return $this->name . '体重' . $this->wight . '斤,要减肥了。' . '减肥套餐:¥1998'; } else if($this->wight>80){ return $this->name . '体重' . $this->wight . '斤,要减肥了。' . '减肥套餐:¥5998'; } else{ return $this->name . '体重' . $this->wight . '斤,身材很棒,不用减肥了。'; } } else{ return '我们之为女性服务。'; } } } $fatwomen=new FatWomen('小红',23,'女',69); echo $fatwomen->dieted();
运行实例 »
点击 "运行实例" 按钮查看在线实例
2、访问控制符的应用
实例
<?php // 访问控制符的应用场景 class Person{ // private修饰的成员在类中、类外及子类均可以访问 public $name; // private修饰的成员在类中和子类中可以访问,类外不可访问 protected $age; // private修饰的成员仅在类中可以访问,类外及子类均不可访问 private $sex; public function __construct($name,$age,$sex) { $this->name=$name; $this->age=$age; $this->sex=$sex; } public function getAge(){ return $this->age; } public function getSex(){ return $this->sex; } } $person=new Person('小明',50,'男'); // age属性是protected不可以在类外访问,但可以在类内访问,通过getAge方法返回出来 // echo $person->age; echo $person->getAge(); echo '<hr>'; // sex属性是private不可以在类外访问,但可以在类内访问,通过getSex方法返回出来 // echo $person->sex; echo $person->getSex(); echo '<hr>'; class Man extends Person{ public function getAge() { return $this->age; } public function getSex() { return $this->sex; } } $man=new Man('小王',42,'男'); // age属性是protected不可以在类外访问,但可以在子类中访问,通过getAge方法返回出来 // echo $man->age; echo $man->getAge(); // sex属性是private不可以在类外访问,也不可以在子类中访问。 // echo $man->sex; // echo $man->getSex();
运行实例 »
点击 "运行实例" 按钮查看在线实例