PHP
发布时间:2022-04-09 发布网站:大佬教程 code.js-code.com
大佬教程收集整理的这篇文章主要介绍了php面向对象全攻略 (八)重载新的方法,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
12.重载新的方法
在学习
PHP 这种语言中你会发现,
PHP 中的
方法是不能重载的,所谓的
方法重载就是
定义相同的
方法名,通过“参数的个数”不同或“参数的类型”不同,来访问我们的相同
方法 名的不同
方法。但
是因为
PHP 是弱类型的语言,所以在
方法的参数中本身就可以接收不同类
型的数据,又因为
PHP 的
方法可以接收不定个数的参数,所以通过传递不同个数的参数
调用 不相同
方法名的不同
方法也是不成立的。所以在
PHP 里面没有
方法重载。不能重载也就是在
你的项目中不能定义相同
方法名的
方法。另外,因为
PHP 没有名子空
间的概念,在同
一个页
面和被包含的
页面中不能定义相同
名称的
方法,也不能定义和
PHP 给我提供的
方法重名,当
然在同
一个类中也不能定义相同
名称的
方法。
我们这里所指的重载新的
方法所指的是什么呢?其实我们所说的重载新的
方法就是子类
覆盖
父类的已有的
方法,那为什么要这么做呢?
父类的
方法不是可以继承过来直接用吗?但
有一些情况是我们必须要覆盖的,比如说我们前面提到过的例子里面,“Person”这个人类里
面有
一个“说话”的
方法,所有继承“Person”类的子类都是可以“说话”的,我们“
student”
类就是“Person”类的子类,所以“
student”的实例就可以“说话”了,但是人类里面“说
话”的
方法里面说出的是“Person”类里面的
属性,而“
student”类对“Person”类进行了扩
展,又扩展出了几个新的
属性,如果使用继承过来的“say()”说话
方法的话,只能说出从
“Person”类继承过来的那些
属性,那么新扩展的那些
属性使
用这个继承过来的“say()”的
方法就说不出来了,那有的人就问了,我在“
student”这个子类中再定义
一个新的
方法用于
说话,说出子类里面所有的
属性不就行了吗?一定不要这么做,从抽象的角度来讲,
一个“学
生”不能有两种“说话”的
方法,就算你定义了两个不同的说话的
方法,可以实现你想要的
功能,被继承过来的那个“说话“
方法可能没有机会用到了,而且是继承过来的你也删不掉。
这个时候我们就要用到覆盖了。
虽然说在
PHP 里面不能定义同名的
方法,但是在父子关系的两个类中,我们可以在子类
中定义和
父类同名的
方法,这样就把
父类中继承过来的
方法覆盖掉了。
代码片段
@H_696_31@ 代码如下:大佬总结
以上是大佬教程为你收集整理的php面向对象全攻略 (八)重载新的方法全部内容,希望文章能够帮你解决php面向对象全攻略 (八)重载新的方法所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。