《php面向对象》 第4课:构造方法和析构方法

在类中有一个特殊的方法:构造方法

构造方法的作用:初始化成员变量(属性)

看下面的代码

<?php


/**
 * 学生类
 */
class Student
{
    //这是学生的4个属性
    private $no;
    private $name;
    private $sex;
    private $age;

    //构造方法
    function __construct($no,$name,$sex,$age)
    {
        $this->no = $no;
        $this->name = $name;
        $this->sex = $sex;
        $this->age = $age;
    }

    //自我介绍
    public  function say(){
        printf("自我介绍:我叫%s,年龄:%d",$this->name,$this->age);
    }


}

//实例化对象
$stu1 = new Student(1001,'张三','男',20);
$stu1->say();

在上面的代码中,我们又见到很多新面孔,下面我就逐一讲介绍。

private:访问修饰符,表示私有的。被private修饰的属性和方法,在类的外部是不能访问的。

如果你写出以下代码:

$stu1 -> name = '张三'

就会报错:cannot access private property student::$name

__construct: 定义构造方法的关键字

定义构造方法时,可以无参数,也可以有参数,或者多个参数。

$this : 表示当前对象,只有在类的方法中,当访问成员变量(属性)或自己的方法时,才会用到$this

比如:$this->name ,其中的name 实际上就是指属性$name

总结一下:

构造方法不能主动调用,也就是你不能通过对象去访问构造方法

当我们实例化对象时,构造方法会自动执行,比如当执行:$stu1 = new Student(1001,'张三','男',20);  

此时的构造方法就会被执行。

 

学完构造方法,接下来就是析构方法。析构方法的作用就是:处理对象善后的工作。

<?php


/**
 * 学生类
 */
class Student
{
    //这是学生的4个属性
    private $no;
    private $name;
    private $sex;
    private $age;

    //构造方法
    function __construct($no,$name,$sex,$age)
    {
        $this->no = $no;
        $this->name = $name;
        $this->sex = $sex;
        $this->age = $age;
    }

    //自我介绍
    public  function say(){
        printf("自我介绍:我叫%s,年龄:%d",$this->name,$this->age);
    }

    //析构方法
    function __destruct()
    {
        echo '正在执行析构方法 ';
    }

}

//实例化对象
$stu1 = new Student(1001,'张三','男',20);

$stu1->say();

PHP有一套垃圾回收机制,当前文件执行完毕后,会销毁或释放所有的变量,也就是说:当执行完 $stu1->say() 时,就会销毁$stu1对象,在销毁对象之前,就会自动执行对象的析构方法,所以运行时会显示:

好了,封装类最基本的语法结构就介绍到这里。

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

李 书 明

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值