设为首页 收藏本站
查看: 1110|回复: 0

[经验分享] php面向对象的重写与重载

[复制链接]

尚未签到

发表于 2017-12-29 23:45:08 | 显示全部楼层 |阅读模式
重写:
  就是当子类继承父类的一些方法后,子类又在其内部定义了相同的方法,则这个新定义的方法会覆盖继承而来的父类的方法,子类只能调用其内部定义的方法。
  有以下几点要求:
  1.当一个父类和子类有一个方法,参数和名字完全一致,那么子类方法会覆盖父类的方法。
  必须参数一致,才会实现方法覆盖。当参数个数不一致,则会报错(这就牵扯到上面说所得方法重载)。当方法名字不一致,就不会覆盖,只是子类新定义的方法。
  2.在实行方法覆盖的时候,访问修饰符可以是不一样的,但是子类的访问范围必须大于等于父类的访问范围。
  这是php这些语言设计时的规定吧。我是这么理解的是访问高一层的东西比较容易,如果再去访问底层的东西权限肯定要高一些。
  要求参数和名字一样。并不是要求子类,父类名称相同。
  是要求参数和名字一样,具体就是要求参数的个数与父类相同,而并不是参数名称一致。即传递的参数名字可以为任意,只要保证传递的个数相同即可。
  看代码:
  

<?php  

class  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');  

?>  

  

<?php  

class 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、方法的异常类型和数目不会对重载造成影响;
  有点复杂 代码不准...
  

<?php  

class 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是重载

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-429536-1-1.html 上篇帖子: php curl 域名解析到指定IP -- clwu 下篇帖子: PHP正则经典漏洞
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表