总结:
一、类中的方法、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();点击 "运行实例" 按钮查看在线实例
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号