发新话题
打印

谁在用PHP进行面向对象编程?请给举一个PHP多形性的例子OK?

谁在用PHP进行面向对象编程?请给举一个PHP多形性的例子OK?

就是类A是类B1  B2  B3的父类,类A中有一个do()方法被子类继承,然后这个方法在三个子类中又分别被改写,能不能用父类的一个do()来对应不同子类对象的被改写的do()?  
在强类型面向对象语言中(C++和JAVA中),这不成问题,可是PHP中这个多形性怎么做到呢,请高手出招!!!!

TOP

<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>

TOP

发新话题