永发信息网

为啥PHP的多态是假多态?

答案:5  悬赏:20  手机版
解决时间 2021-03-30 18:29
为啥PHP的多态是假多态?
最佳答案
1.多态是指在面向对象中能够根据使用类的上下文来重新定义或改变类的性质和行为。
2.PHP不支持重载实现多态,但是PHP可以变向的实现多态效果。
3.php其语法特点,不支持固定变量类型,它是根据上下文来确定当前的类型是什么,即,最后一次赋值是什么类型,现在它就是什么类型。也就不存在将子类
变量赋给基类变量的说法。但php函数的参数,是可以规定类型的,如下面的show函数。如果传递一个不是此类型的参数,将会在运行时报错。
代码如下:
 

abstract class T{
    abstract function show();
}
 

class T1 extends T {
    public function show(){
        echo "T1 from abstract class!
";
    }
    public function show1(){
        echo "T1 not from abstract class!
";
    }
}
 

class T2 extends T {
    public function show(){
        echo "T2 from abstract class!
";
    }
    public function show1(){
        echo "T2 not from abstract class!
";
    }
}
 
class T3 {
    public function show(){
        echo "in T3!
";
    }
    public function show1(){
        echo "in T3!
";
    }
}
 
$t1 = new T1();
$t2 = new T2();
$t3 = new T3();
 
show($t1);
show($t2);
 
//报错,$t3不是T,所以被show函数调用的时候,会报类型不对的错误
//show($t3);
 
function show( T $t ){//注意参数的类型
    $t->show();
    $t->show1();
}
?>
全部回答
你猜,你猜,你猜猜猜
理论上来讲PHP是不支持多态的
很显然PHP并不支持相同的函数名。
PHP的类中不允许像C#或者Java那样定义多个名称相同但是参数顺序、类型不同的方法,而是通过对参数赋默认值的方式来实现函数的参数形式可变,看起来像多态,但是不是真实意义上的多态。
例子:php中的'多态'
function set($name='',$age=0,$sex='male'){
}
调用时:
set('Miss Gao');
set('Miss Gao',21);
set('Miss Gao',21,'women');
例子:c#中的多态,可以定义多个方法名相同的方法,只要他们的方法签名不相同
class Person
{
public void set(string name){}
public void set(string name,int age){}
public void set(string name,int age ,string sex){}
}
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
如何评价韩国电影《素媛》和《熔炉》?
夫妻二人在那边艰苦奋斗十几年一个目标奔小康
有关中考激励学习的名言(配文章)
山里居农庄地址在哪,我要去那里办事
java中这个函数setForeground()有何作用
EXCEL中怎么同时求出一列数据的百分比?
继杰是什么意思?代表着什么含义?
五证是哪五证,什么是五证两书一表
灵魂火花中的英文歌是什么歌
please don t go - san e 完整MP3格式,320K
呵蕊多少钱一盒10支
古筝谱三个竖着写的滑音怎么弹
我今年满了70岁,请问什么时候可领老年补助金?
新手淡水鱼繁殖那些需注意?
兴达模具涨工资太慢了,怎么这么慢
推荐资讯
夜色撩人电影 中文版
U75V钢轨是什么钢轨
VV云交易技巧是不是只有倍投这些方法
甘肃省哪个单位钢结构做的好
网上一些所谓「心理学家做了 XXX 实验」解释
韩国Stellar组合成员真实身高
是折100个星星能许个愿望还是1000个,还是随
开始觉得世界好可怕了,怎么办?
我的手机是HTC t328w。请问一下支持哪个版本
陶喆什么歌好唱(我不会高音),又好听,班里
被人威胁后报警,又被打了
欲钱中国地图是什么肖
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?