php的方法重载(overload)和重写(override)

    |     2017年3月12日   |   学习偶记   |     评论已关闭   |    1902

方法重载的意思就是同一个类里有多个同名的方法。比如A类里有3个add()方法,这3个add方法每个的参数不同。

php的方法重载可以用以下例子模拟。

<?php
class 类名
{
    public 方法名()
    {
        $args = func_num_args(); //获取方法调用时的参数个数
        $args_arr = func_get_args(); //获取方法调用时的参数值,返回数组。
        swith($args)
        {
            case 0:
            echo '这里写没有参数的调用方法';
            break;
            case 1:
            echo '这里写1个参数的调用方法';
            break;
            case 2:
            echo '这里写2个参数的调用方法';
            break;
            default:
            echo '没有定义的参数调用方法';
            break;
        }
    }
    //用法
    $变量名 = new 类名();
    $变量名->方法名();
    $变量名->方法名('1个参数');
    $变量名->方法名('2个参数');
}

重写的例子就不给了,记住几个要点:

父类的public ,子类必须 public。子类的覆盖方法不能比父类更严格。

父类的protected(受保护的) private(私有的) 的方法,可以在子类中用public修饰。

子类的方法可以拥有和父类方法中不同的参数个数。比如父类中方法没有参数,子类中重写后可以有参数。

父类中的构造函数__construct()如果用public修饰,子类中可以不用加public修饰符,并且可以重写。

噢!评论已关闭。