当前位置:编程学习 > php >>

PHP构造器是不是不能重载? - PHP进阶讨论

PHP构造器是不是不能重载?
答案:
原帖由 于 2008-9-28 09:53 发表 [i][/url]重载:(overload)1.在同一个类中;(不单单是类中,普通函数也包括)2.方法名相同;3.参数个数或者参数类型不同(如果参数类型和个数相同,但是类型顺序不同也是重载!)4.与返回类型无关劳伦斯兄弟说得对,PH ... [/b]龙兄说对了关键的概念没弄清楚吧,名词与用途没有对上号。1、弄清概念:重载(overload)、重写(override)、继承(extends)2、PHP是弱类型,重载根据变量类型和个数不同而进行,所以只能模拟重载。3、PHP支持在继承类中重写(覆盖)方法。4、构造函数(_construct)可以被继承。
到技术吧网站查看回答详情>>
PHP构造函数不是不能重载, 而是不能被继承.要在子类使用构造函数, 必须重载构造函数.分清继承与重载的定义.
到技术吧网站查看回答详情>>
LZ是指override可以的, 只要同名就可以了呀. 但最好是使用PHP5中的__construct构造函数不知道是不是指这个, LZ可以贴个例子代码
到技术吧网站查看回答详情>>
PS:由于PHP是弱类型语言,所以一般模拟重载,都只会考虑参数个数[[i] 本帖最后由 pylong 于 2008-9-28 10:38 编辑 [/i]]
到技术吧网站查看回答详情>>
原帖由 于 2008-9-21 15:26 发表 [i][/url]PHP构造函数不是不能重载, 而是不能被继承.要在子类使用构造函数, 必须重载构造函数.分清继承与重载的定义. [/b]我没问继承 重载 ,这是两码事。 而且“子类使用构造函数”也不叫重载
到技术吧网站查看回答详情>>
子类没有构造器会继承父类的构造函数,如子类有构造函数就用子类的构造函数拉.
到技术吧网站查看回答详情>>
PHP不支持重载,但你可以根据缺省参数自己判断,模拟重载。
到技术吧网站查看回答详情>>
重载:(overload)1.在同一个类中;(不单单是类中,普通函数也包括)2.方法名相同;3.参数个数或者参数类型不同(如果参数类型和个数相同,但是类型顺序不同也是重载!)4.与返回类型无关劳伦斯兄弟说得对,PHP只能模拟重载覆盖:(override)覆盖是指子类重新定义父类的虚函数的做法
到技术吧网站查看回答详情>>
目前的PHP没有真正的重载(指一个类中定义多个不同参数个数或参数类型的同名方法).11楼的方法可以模拟重载.??11楼的例子回答了自己提出的问题(只是构造器重载的意义何在 ..? ), 构造函数重载在复杂的应用中还是有意义的.
到技术吧网站查看回答详情>>
class father{??function father(){??}}class son{??function son{? ? base->father();??}}
到技术吧网站查看回答详情>>
回2楼贴: __construct() 是可以被继承的。。
到技术吧网站查看回答详情>>
原帖由 于 2008-9-21 20:46 发表 [i][/url]我没问继承 重载 ,这是两码事。 而且“子类使用构造函数”也不叫重载 [/b]你不继承。。怎么重载。。。
到技术吧网站查看回答详情>>

上一个:是先学PHP呢还是先学HTML好呢
下一个:php代码错误,望好心人看看错在哪里!

CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,