php重载和重写的区别是什么?
php重载和重写的区别是什么?
内容导读
收集整理的这篇技术教程文章主要介绍了php重载和重写的区别是什么?,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2228字,纯文字阅读大概需要4分钟。
内容图文
重写:
就是当子类继承父类的一些方法后,子类又在其内部定义了相同的方法,则这个新定义的方法会覆盖继承而来的父类的方法,子类只能调用其内部定义的方法。
有以下几点要求:
1.当一个父类和子类有一个方法,参数和名字完全一致,那么子类方法会覆盖父类的方法。
必须参数一致,才会实现方法覆盖。当参数个数不一致,则会报错(这就牵扯到上面说所得方法重载)。当方法名字不一致,就不会覆盖,只是子类新定义的方法。
2.在实行方法覆盖的时候,访问修饰符可以是不一样的,但是子类的访问范围必须大于等于父类的访问范围。
这是php这些语言设计时的规定吧。我是这么理解的是访问高一层的东西比较容易,如果再去访问底层的东西权限肯定要高一些。
要求参数和名字一样。并不是要求子类,父类名称相同。
是要求参数和名字一样,具体就是要求参数的个数与父类相同,而并不是参数名称一致。即传递的参数名字可以为任意,只要保证传递的个数相同即可。
看代码:
<?phpclass shao{ public function sasa($name){ echo $name,'狗!<br/>'; }}class zhen extends shao{ public function aaa() { echo '猫<br/>'; }}$lli = new zhen();$lli->aaa();$lli->aaa('binghh');?>
<?phpclass fu{ public function text(){ echo '父类'; } public function textt(){ echo '父亲';}}class erzi extends fu{ public function text() { parent::text();//我要父类的东西 echo '儿子';//重写 }}$shili = new fu();$erzi = new erzi();$erzi->text();?>
重载:
重载是类的多态的一种实现。函数重载指一个标识符被用作多个函数名,且能够通过函数的参数个数或参数类型将这些同名的函数区分开来,调用不发生混淆。即当调用的时候,虽然方法名字相同,但根据参数的不同可以自动调用相应的函数。
php不好实现。
可以使类里面的某个方法产生多种效果,根据传入参数不同,可以执行不同的逻辑。
有以下几点要求:
1、在使用重载时只能通过相同的方法名、不同的参数形式实现。不同的参数类型可以是不同的参数类型,不同的参数个数,不同的参数顺序(参数类型必须不一样);
2、不能通过访问权限、返回类型、抛出的异常进行重载;
3、方法的异常类型和数目不会对重载造成影响;
<?phpclass fu{ public function text(){ echo '父类'; } public function textt(){ echo '父亲'; }}class erzi extends fu{ function test($name) { //方法重载 parent::text();//我要父类的东西 echo "erzi",$name;//重写 } }$erzi = new fu();$erzi-> text("123");?>
重写只存在于子类与父类中,重载存在于一个类中。
override是重写
overload是重载
关于重写和重载的更多内容,请访问PHP中文网:PHP视频教程
以上就是php重载和重写的区别是什么?的详细内容,更多请关注Gxl网其它相关文章!
内容总结
以上是为您收集整理的php重载和重写的区别是什么?全部内容,希望文章能够帮你解决php重载和重写的区别是什么?所遇到的程序开发问题。 如果觉得技术教程内容还不错,欢迎将网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。