php中重写方法有什么规则

php中重写方法的规则有:1、final修饰的类方法不能被子类重写;2、如果要重写父类方法,那么参数个数必须一致;3、在重写时,访问级别只可以等于或大于父类,不可提升访问级别。

php中重写方法有什么规则

方法重写规则:

(学习视频分享:java视频教程)

1、final修饰的类方法不可被子类重写

final修饰的类方法不可被子类重写 即便final private方法无法被继承 子类仍不能对齐进行重写

立即学习“PHP免费学习笔记(深入)”;

class FinalMethod{    //可继承不可重写    final public function finalPublic()    {        echo "can be inherited, but be overrided";    }    //可继承不可重写    final protected function finalProtected()    {        echo "can be inherited, but be overrided";    }    //不可继承不可重写 虽然子类继承不到父类的private方法 但同时也会被final限制无法重写    final private function finalPrivate()    {        echo "can not be inherited or be overrided";    }    //虽然不可继承 但子类里可重写此方法    private function private()    {        echo "can not be inherited ,but be overrided";    }}class Override extends FinalMethod{    //error    public function finalPublic()    {    }    //error    protected function finalProtected()    {    }    //error    private function finalPrivate()    {    }    //correct    public/protected/private function private()    {        //子类继承父类重写父类方法时访问级别只能更加宽松 不可更为严格    }}

登录后复制

2、PHP是否重写父类方法只会根据方法名是否一致判断(5.3以后重写父类方法参数个数必须一致)

这里并不是说方法参数无任何作用 PHP无重载机制 所以判断是不是重写只会通过方法名(C/C++不仅要方法名相同,参数也相同时才被视为重写,否则即为重载,即新定义了一个多态函数的态) 当方法名相同时即被认为是在重写父类方法,5.2可以参数不同,5.3以后参数需和父类方法一致,且都追寻继承访问级别的规则。

class Father{    public function index($args_1)    {    }}class Child extends Father{    //5.3以后重写方法必须与父类保持参数个数相同    public function index($args_1, $args_2)    {        //在C/C++中此为重载非重写,因为C/C++具有标准的多态机制,会因参数不同而视为某一方法的另一种态        //but在php中此依然为重写 但5.3以后此为非法 必须与父类的方法参数个数保持一致    }    //5.3以后重写方法必须与父类保持参数个数相同    private function index($args_1, $args_2)    {        //C/C++会因为参数不同于父类方法而视为重载,即新定义了一个函数的态,所以不会受到继承访问权限的限制        //但php仍然会被视为对父类方法的重写,会受到继承访问权限的升降规则限制    }}

登录后复制

3、重写时访问级别只可以等于或者宽松于父类 不可提升访问级别

父类的public方法不能被子类重写为protected或者private,protected方法不能被重写为private,可以宽松er,不可以严格er

class Father{    public function index()    {    }}class Child extends Father{    protected/private function index()    {       //访问权限提升 错误       //父类为public 则子类重写也只能为public       //父类为protected 则子类可为public/protected       //父类为private 则子类public/protected/private皆可    }}

登录后复制

相关推荐:php培训

以上就是php中重写方法有什么规则的详细内容,更多请关注【创想鸟】其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至253000106@qq.com举报,一经查实,本站将立刻删除。

发布者:PHP中文网,转转请注明出处:https://www.chuangxiangniao.com/p/2521392.html

(0)
上一篇 2025年3月5日 16:54:51
下一篇 2025年3月5日 16:55:00

AD推荐 黄金广告位招租... 更多推荐

相关推荐

  • php中双引号和单引号的区别是什么

    php中双引号和单引号的区别是:双引号中的字段会经过编译器解析,然后当成HTML代码输出;单引号中的字段不会经过编译器解析,而是直接输出。 区别如下: “”双引号里面的字段是会经过编译器解析,然后当中HTML代码输出…

    2025年3月5日
    000
  • php $_session用法是什么

    php $_session用法:1、初始化session变量,代码为【session_start();】;2、session的写入、读取,代码为【$_SESSION[‘keyword’]= “php&#8…

    2025年3月5日
    200
  • php表单提交时获取不到post数据问题

    php表单提交时获取不到post数据的解决办法:首先找到【php.ini】配置文件,查找【enable_post_data_reading】变量;然后确保其打开状态。 php表单提交时获取不到post数据的解决办法: 1.找到php.ini…

    2025年3月5日
    200
  • php如何实现点赞

    php实现点赞的方法:首先获取到文章id,代码为【var id=$(“#vote”).attr(‘rel’)】;然后点赞成功后刷新页面更新新的点赞次数,代码为【window.location.…

    2025年3月5日
    200
  • php中文截取乱码怎么办

    php中文截取乱码的解决办法:首先利用ASCII编码和中文编码的二进制范围不一致而把它们区分开来;然后通过【substr()】截取字符串的函数实现的。 php中文截取乱码的解决办法: 实现的原理还是比较简单,主要是利用ASCII编码和中文编…

    2025年3月5日
    200
  • php中如何返回查询数据集

    php中返回查询数据集的方法:1、使用函数【mysql_result()】查询;2、使用函数【mysql_fetch_row()】查询;3、使用函数【mysql_fetch_array()】查询。 php中返回查询数据集的方法: 1、mys…

    2025年3月5日
    200
  • php 时间戳如何转换日期

    php时间戳转换日期的方法:首先创建一个PHP示例文件;然后通过time函数获得当前时间的时间戳;最后通过“date(“Y-m-d “, time())”方式将时间戳转换成日期即可。 本教程操作环境:windows1…

    2025年3月5日
    200
  • php pdf转换成图片的方法

    php pdf转换成图片的方法:首先下载“ImageMagick-6.7.1-6”;然后进行编译安装;接着安装imagick的PHP扩展;最后通过PHP代码调用即可。 本教程操作环境:windows10系统、php5.6,本文适用于所有品牌…

    2025年3月5日
    200
  • apache php 不解析怎么办

    apache php不解析的解决办法:1、加载“php5_module”和“libphp5.so”模块;2、修改apache的配置文件“httpd.conf”;3、在编译安装apache时加上参数“most”和“all”即可。 推荐:《PH…

    2025年3月5日
    200
  • php如何实现忘记密码找回的功能

    php实现忘记密码找回功能的方法:1、用户注册时需要提供一个E-MAIL邮箱;2、打开表单并输入注册用的E-MAIL邮箱;3、从数据库中查找到该用户信息,并更新该用户的密码为一个临时密码;4、借助Jmail功能实现修改密码即可。 本教程操作…

    2025年3月5日
    200

发表回复

登录后才能评论