<div>一个多态性的例子:</div><?class foo1
{
var $virtual_func; function foo1()
{
$virtual_func = "func1";
}
function func1()
{
echo "foo1::func1<br>";
}
}class foo2 extends foo1
{
function foo2()
{
$virtual_func = "func1";
}
function func1()
{
echo "foo2::func1<br>";
}
}function call_object_func($o)
{
$o->func1();
}$obj1 = new foo1;
$obj2 = new foo2;call_object_func($obj1); // echo foo1::func1
call_object_func($obj2); // echo foo2::func1?><div>就这么简单!</div><br>
<div>对于 C++ 之类的强类型语言,一个对象有两个类型:
<ol>
<li>定义时的类型(静态类型)
<li>运行时的类型(动态类型)
</ol>
所以需要“虚函数”,使对象的动态类型可以与静态类型不同。
</div><br>
<div>而 PHP 是弱类型语言,对象只有运行时的类型,根本不存在“虚”的问题,或者说,PHP 的方法本来就是“虚”的,你还在哪里“寻寻觅觅”什么呢?</div>
{
var $virtual_func; function foo1()
{
$virtual_func = "func1";
}
function func1()
{
echo "foo1::func1<br>";
}
}class foo2 extends foo1
{
function foo2()
{
$virtual_func = "func1";
}
function func1()
{
echo "foo2::func1<br>";
}
}function call_object_func($o)
{
$o->func1();
}$obj1 = new foo1;
$obj2 = new foo2;call_object_func($obj1); // echo foo1::func1
call_object_func($obj2); // echo foo2::func1?><div>就这么简单!</div><br>
<div>对于 C++ 之类的强类型语言,一个对象有两个类型:
<ol>
<li>定义时的类型(静态类型)
<li>运行时的类型(动态类型)
</ol>
所以需要“虚函数”,使对象的动态类型可以与静态类型不同。
</div><br>
<div>而 PHP 是弱类型语言,对象只有运行时的类型,根本不存在“虚”的问题,或者说,PHP 的方法本来就是“虚”的,你还在哪里“寻寻觅觅”什么呢?</div>
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货