构造函数和折构函数

来源:2-5 PHP类和对象之构造函数和析构函数

SAGEGSDAGESE

2016-04-02 12:27

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


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回答

  • 黑犬
    2016-04-02 12:51:38
    已采纳

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

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

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

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

    SAGEGS...

    非常感谢!

    2016-04-05 16:25:53

    共 1 条回复 >

  • 旅行的癞蛤蟆
    2016-04-04 16:15:52

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

  • SAGEGSDAGESE
    2016-04-02 14:33:53

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

PHP进阶篇

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

181727 学习 · 2575 问题

查看课程

相似问题