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

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

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

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

[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个参数’);
}
[/php]

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

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

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

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

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

噢!评论已关闭。