php类重载
2024-10-20 11:29:46
首先,因为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(,); $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==){
test1($arr[]);
}else {
test2($arr[],$arr[]);
}
} 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"); ?>
最新文章
- 自定义刻度的SeekBar
- mysql密码遗忘和登陆报错问题
- 分批次获取git for windows的源代码
- 仿酷狗音乐播放器开发日志二十六 duilib在标题栏弹出菜单的方法
- CI 笔记 easyui 结合后,左侧导航跳转问题
- springMVC整合memcached,以注解形式使用
- onSaveInstanceState()和onRestoreInstanceState()方法
- 不是技术牛人,如何拿到国内IT巨头的Offer (转载)
- hdu5635 BestCoder Round #74 (div.2)
- Unity 读写文本 文件
- 软件推荐-c#绘图插件echart
- PowerBI开发 第十五篇:DAX 表达式(时间+过滤+关系)
- ATM+购物车商城
- 关于java和c语言中,变量重名问题
- JTAG TAP Controller
- 【CF739E】Gosha is hunting 贪心
- Ecshop 2.x_3.x SQL注入和代码执行漏洞复现和分析
- 003--MySQL 数据库事务
- python基础知识体系
- Windows系统常用修复命令 无须重装系统