为了账号安全,请及时绑定邮箱和手机立即绑定

构造函数和折构函数

什么是构造函数和折构函数?慕课的介绍实在看不懂


class Car {
  function __construct() {
      print "父类构造函数被调用\n";
  }
}
class Truck extends Car {
   function __construct() {
       print "子类构造函数被调用\n";
       parent::__construct();
   }  //这里也不是嵌套啊,为什么叫子类和父类啊?
}
$car = new Truck();

同样,PHP5支持析构函数,使用__destruct()进行定义,析构函数指的是当某个对象的所有引用被删除,或者对象被显式的销毁时会执行的函数。

class Car {
  function __construct() {
      print "构造函数被调用 \n";
  }
  function __destruct() {
      print "析构函数被调用 \n";
  }
}
$car = new Car(); //实例化时会调用构造函数
echo '使用后,准备销毁car对象 \n';
unset($car); //销毁时会调用析构函数


正在回答

3 回答

class Truck extends Car {
   function __construct() {
       print "子类构造函数被调用\n";
       parent::__construct();
   }  //这里也不是嵌套啊,为什么叫子类和父类啊?
}

这里解释一下extends是继承的意思,Truck类继承了Car类中的属性和方法,因此Truck里也继承了Car中的function __construct,也就是构造函数,构造函数是当类被实例化,也就是被new出来的时候会自动调用的函数,因此,truck和car被new的时候构造函数里的语句就会被执行。

继承虽然不是嵌套,但是也是有父类盒子类的关系,被继承的是父亲,继承他人属性的是子类。

unset()函数会销毁被实例化出来的类,也就是对象,这时如果定义了析构函数 __destruct(),函数类的语句就会被调用。

1 回复 有任何疑惑可以回复我~
#1

SAGEGSDAGESE 提问者

非常感谢!
2016-04-05 回复 有任何疑惑可以回复我~

构造函数就是,当类的对象被创建时,构造函数也被创建并调用,若没有写构造函数,类本身也有一个默认的构造函数,不过默认的构造是空的,没有函数体,所以创建对象的时候没有什么输出结果。但当你创建一个构造函数时,会覆盖原来的默认构造函数。    析构函数也就是对象被销毁时调用的函数。

1 回复 有任何疑惑可以回复我~

竟然老眼昏花到把析看成折了...

0 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消
PHP进阶篇
  • 参与学习       181826    人
  • 解答问题       2577    个

轻松学习PHP中级课程,进行全面了解,用PHP快速开发网站程序

进入课程

构造函数和折构函数

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信