php类方法重写原则有哪些

php类方法重写原则有:1、final修饰的类方法不可以被子类重写;2、php是否重写父类方法只会根据方法名是否一致判断;3、在重写时,访问级别只可以等于或者宽松于父类,不可以提升访问级别。

php类方法重写原则有哪些

php类方法重写规则:

(推荐教程:php教程)

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

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

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免费学习笔记(深入)”;

这里并不是说方法参数无任何作用,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。

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

登录后复制

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

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

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

(0)
上一篇 2025年2月25日 00:29:21
下一篇 2025年2月23日 10:33:54

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

相关推荐

  • php mysql插入乱码怎么办解决

    php mysql插入乱码的解决办法:1、在HTML代码中的文件头中加入utf8属性;2、在php代码的开始部分加入代码“charset=utf-8”;3、将表字段存储中文的部分设置为“utf8_general_ci”类型。 PHP+MyS…

    2025年2月25日
    200
  • php如何捕捉错误

    php捕捉错误的方法:1、使用“try catch”语句捕获错误;2、通过“set_exception_handler”方法捕获错误,该方法用于设置用户自定义的异常处理函数。 PHP错误捕获处理   一般捕获错误使用的方法是: try{  …

    2025年2月25日
    200
  • ubuntu下php如何安装curl

    ubuntu下php安装curl的方法:可以通过执行apt-get命令安装。具体方法是:1、执行【sudo apt-get install curl  libcurl3-dev php7.0-curl】命令安装;2、重启apache服务器。…

    2025年2月25日
    200
  • php如何实现取消订单?

    php实现取消订单的方法:首先【order_status】为1时代表客户下单确定;然后为2时代表客户已付款;最后为0时代表订单已取消,运用swoole的异步毫秒定时器。 php实现取消订单的方法: 一、业务场景:当客户下单在指定的时间内如果…

    2025年2月25日
    200
  • php读取txt乱码怎么办

    php读取txt乱码的解决办法:首先下载并安装Editplus软件;然后把要读取的txt文本重新进行编码;最后使用php读取指定txt文本随机一行内容即可。 PHP读取txt文本内容乱码问题解决方法 首先要说txt文件的编码格式ANSI、U…

    2025年2月25日
    200
  • 关于ubuntu php环境设置详解

    ubuntu php设置方法:首先更新源列表;然后打开“终端窗口”,输入命令“sudo apt-get install php5”来安装php;接着安装配置好apache环境,并安装php5-gd模块;最后创建“info.php”文件即可。…

    2025年2月25日 编程技术
    200
  • php如何将日期转换成字符串

    php将日期转换成字符串的方法是:我们可以通过date()函数来实现。date()函数用于格式化本地日期和时间,如果成功则返回格式化的日期字符串,如果失败则报E_WARNING错并返回FALSE。 要将日期时间戳转换成时间字符串,可以通过d…

    2025年2月25日
    200
  • php如何删除文件中任意一行?

    php删除文件中任意一行的方法:首先将文件逐行读入数组;然后遍历数组并把数组各元素的值添加到要保存的字符串中;接着当处理到对应于要删除的行的数组元素时不读入它;最后保存文件即可。 php删除文件中任意一行的方法: 实现思路:     将文件…

    2025年2月25日
    200
  • 如何用php实现unicode和utf8的转换?

    用php实现unicode和utf8转换的方法:首先对于【4-6】字节编码的情况不必考虑;然后出现四字节以上的【utf-8】字符,可以直接视为乱码忽略掉或转为unicode实体形式即可,代码为【$utf8char = “{$c}…

    2025年2月25日
    200
  • php连接mysql数据库报错了怎么办

    php连接mysql数据库报错了的解决方法是:1、打开环境变量设置,在Path变量后添加php的安装目录;2、重启计算机;3、将libmysql.dll文件拷贝到apache服务器中的bin目录下;4、重启apache服务器。 错误描述: …

    2025年2月25日
    200

发表回复

登录后才能评论