浅谈PHP的构造方法

今天突然发现PHP的面向对象的设计与java等传统的面向对象的语言有区别,下面我要与大家分享一下我的一些经验,

①构造方法名和类名相同(php4版),php5版的构造方法名可以和类名相同,也可以是__construct()
②构造方法没有返回值
③构造方法的主要作用是完成对新对象的初始化,并不是创建对象本身。
④在创建新对象后,系统会自动的调用该类的构造方法,不需要自己写代码调用   
⑤一个类有且只有一个构造方法,在php5后虽然__construct()  和 类名() 可以共存,但是实际上也只能使用一个。
⑥如果没有给类自定义构造方法,则该类使用系统默认的构造方法。 */
⑦如果给类自定义了构造方法,则该类的默认构造方法被覆盖。
⑧构造方法的默认访问修饰符是public

在php 5 中一个类可以同时有 两种形式的构造方法:
__construct() 和 类名() , 当两个同时存在的时候,优先调用__construct(), 请大家以后使用__construct(),即我们推荐使用__construct()方式来进行实现

注意事项:

(1)一旦自定义了一个构造函数,默认的构造函数就被覆盖了,这时在创建对象的时候就要使用自定义的构造函数.
(2)一个类只能有一个构造函数.(不能重载,这一点与java,c++等不同)

我想说的是php创建一个类的实例的时候,构造方法调用的问题。

php中不像java一样,创建一个class的实例的时候 会自动的首先调用父类(超类)的构造方法,以确保所有的属性都可以被正确的初始化。php 不会在本类的构造方法中再自动的调用父类的构造方法。如果真的需要调用父类的构造方法,可以手动的调用parent::__construct($params...);  

同时:

1,如子类不定义构造函数 __construct(),则父类的构造函数默认会被继承下来,且会自动执行。
2,如子类定义了构造函数 __construct(),因为构造函数名也是__construct(),所以子类的构造函数实际上是覆盖(override)了父类的构造函数。这时执行的是该子类的构造函数。
这时如果要在子类里执行父类的构造函数,必须执行类似以下语句:parent::__construct();

所以,我们推荐在子类的构造方法里,手动调用父类的构造方法.

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值