当前位置 : 主页 > 编程语言 > java >

php类重载

来源:互联网 收集:自由互联 发布时间:2022-06-23
首先,因为PHP是弱类型语言,是不直接支持重载的,不过可以通过一些方法来实现重载。 先说一下重写 在子类继承父类方法后,自己重新定义父类的方法,包含函数名,形参(个数,

首先,因为PHP是弱类型语言,是不直接支持重载的,不过可以通过一些方法来实现重载。

先说一下重写

在子类继承父类方法后,自己重新定义父类的方法,包含函数名,形参(个数,顺序)完全相同,但权限修饰符可不同,子类的的权限修饰符应该大于等于父类的权限修饰符。

class Animal{
public function cat($var1,$var2)
{
echo 'Hello,'.$var1.$var2;
}
}

class Small extends Animal{
public function cat($a1, $a2){
echo 'cat cat cat!!!'.$a1.$a2;
}
}

$a = new Small();
$a->cat(1,2);

$b = new Animal();
$b->cat('laibao','hh');

重载,多态的一种形式,通过对同一函数传值的不同,来获取不同的逻辑处理。但PHP是弱类型语言,不像JAVA、C++一样强类型,直接支持重载,不过 可以通过以下方式来间接的实现重载。

<?php

function test1($name){
echo $name;
}

function test2($name,$age){
echo $name.$age;
}

function load(){
//返回输入的元素数目
$num=func_num_args();
//返回输入元素列表的数组形式
$arr=func_get_args();

if($num==1){
test1($arr[0]);
}else {
test2($arr[0],$arr[1]);
}
}

load("a");
echo "";
load("a","b");
?>

 

<?php
class A{
//name :调用的方法名字。args:参数列表
function __call($name,$args){
$num=count($args);
if($num==1){
$this->test1($args[0]);
}
else {
$this->test2($args[0],$args[1]);
}
}

function test1($name){
echo $name;
}
function test2($name, $age){
echo $name." ".$age;
}
}

$a=new A();
$a->a("a");
echo "";
$a->a("a","b");

?>

 

上一篇:限定时间格式化
下一篇:没有了
网友评论