千家信息网

构造方法与析构方法

发表于:2025-01-21 作者:千家信息网编辑
千家信息网最后更新 2025年01月21日,构造方法与析构方法是对象中的两个特殊方法,它们都与对象的生命周期有关。构造方法是对象创建完成后第一个被对象自动调用的方法,这也是我们在对象中使用构造方法的原因。而析构方法是对象在销毁之前最后一个被对象
千家信息网最后更新 2025年01月21日构造方法与析构方法

构造方法与析构方法是对象中的两个特殊方法,它们都与对象的生命周期有关。构造方法是对象创建完成后第一个被对象自动调用的方法,这也是我们在对象中使用构造方法的原因。而析构方法是对象在销毁之前最后一个被对象自动调用的方法,这也是我们在对象中使用析构方法的原因。所以通常使用构造方法完成一些对象的初始化工作,使用析构方法完成一些对象在销毁前的清理工作。

1、构造方法

在类中声明构造方法的格式如下:

function __construct(参数列表){ //构造方法名称是以两个下划线开始的 __construct()

//方法体,通常用来对成员属性进行初始化赋值

}

class person{

//下面是声明人的成员属性,都是没有初值的,在创建对象时,使用构造方法赋初值

var $name;

var $sex;

var $age;


//声明一个构造方法,将来创建对象时,为对象的成员属性赋予初值,参数中都使用了默认参 数

function __construct($name="",$sex="男",$age="1"){

$this->name=$name; //在创建对象时,使用传入的参数$name为成员属性 $this->name赋初值

$this->sex=$sex; //在创建对象时,使用传入的参数$sex为成员属性$this- >sex赋初值

$this->age=$age; //在创建对象时,使用传入的参数$age为成员属性$this- >age赋初值

}

function say(){

echo "我的名字:".$this->name.";我的性别:".$this->sex.";我的年 龄:".$this->age."。
";

}

function run(){

echo $this->name."在走路
";

}

}


//下面三行中实例话person类的三个实例对象,并使用构造方法分别为新创建的成员属性赋予初值

$person1=new person("张三","男","40"); //创建对象$person1时会自动执行构造方法,将全 部参数传给它

$person2=new person("李四","女"); //创建对象$person1时会自动执行构造方法,传入前两个 参数

$person3=new person("王五"); //创建对象$person1时会自动执行构造方法,只传入一个参数


$person1->say();

$person1->run();


$person2->say();

$person2->run();


$person3->say();

$person3->run();

?>

代码运行结果如下所示:


2、析构方法

析构方法的声明格式与构造方法相似,在类中声明的析构方法名称也是固定的,也是以两个下划线开头的方法名"__destruct",而且析构函数不能带有任何参数。在类中声明析构方法的格式如下:

function __destruct(){ //析构方法名称是以两个下划线开始的__destruct()

//方法体,通常用来完成一些在对象销毁前的清理任务

}

class person{

var $name;

var $sex;

var $age;


function __construct($name,$sex,$age){

$this->name=$name;

$this->sex=$sex;

$this->age=$age;

}

function say(){

echo "我的名字:".$this->name.";我的性别:".$this->sex.";我的年龄:".$this->age."。
";

}

function run(){

echo $this->name."在走路
";

}


//声明的析构方法,在对象销毁前自动调用

function __destruct(){

echo "再见".$this->name."
";

}

}


$person1=new person("张三","男","40");

$person1=null; //第一个对象将失去引用

$person2=new person("李四","女","20");

$person3=new person("王五","男","50");

?>
代码运行结果为:

因为对象的引用都是存放在栈内存中的,由于栈的后进先出的特点,最后创建的对象引用会被最先释放,所以先自动调用第三个对象的析构方法,最后才自动调用第二个对象的析构方法。


方法 对象 参数 初值 属性 成员 两个 下划线 名称 格式 三个 代码 原因 名字 实例 性别 结果 张三 李四 王五 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 数据库设计表的时候需要注意什么 班加罗尔为什么软件开发迅速 软件开发人员招聘计划方案 统计符合单元格条件的数据库 西安高新区软件开发公司有几家 成都菜鸟网络技术有限公司好吗 mc自己的服务器怎么看地址 网络安全漫画图片五年级 安徽电力卫星授时服务器 java将文件存到数据库 云服务器怎么提高安全性 虚拟机连接数据库失败 三级网络技术题库链接 如何查询亚马逊数据库 自动化执行数据库脚本工具 吉林水果蔬菜配送软件开发 拼多多的软件开发公司 php 安全连接数据库 天龙万象归一2数据库密码 浙江智慧灯杆软件开发 计算机等级考网络技术知识 青岛网络安全技术中心 数据库中怎么加数字 写网络安全自查工作方案 力帮网络安全科技有限公司 龙口直播软件开发外包公司 QT怎样取数据库并处理数据 庐阳区网络技术怎么样 转行做软件开发要学多久 用易语言做数据库查询
0