举一个PHP多形性的例子
时间:2006-03-21 来源:leaslie
就是类A是类B1 B2 B3的父类,类A中有一个do()方法被子类继承,然后这个方法在三个子类中又分别被改写,能不能用父类的一个do()来对应不同子类对象的被改写的do()?
在强类型面向对象语言中(C++和JAVA中),这不成问题,可是PHP中这个多形性怎么做到呢,请高手出招!!!!
一个多态性的例子:
func1();
}
$obj1 = new foo1;
$obj2 = new foo2;
call_object_func($obj1); // echo foo1::func1
call_object_func($obj2); // echo foo2::func1
?>
就这么简单!
对于 C++ 之类的强类型语言,一个对象有两个类型:
定义时的类型(静态类型)
运行时的类型(动态类型)
所以需要“虚函数”,使对象的动态类型可以与静态类型不同。
而 PHP 是弱类型语言,对象只有运行时的类型,根本不存在“虚”的问题,或者说,PHP 的方法本来就是“虚”的,你还在哪里“寻寻觅觅”什么呢?
在强类型面向对象语言中(C++和JAVA中),这不成问题,可是PHP中这个多形性怎么做到呢,请高手出招!!!!
一个多态性的例子:
func1();
}
$obj1 = new foo1;
$obj2 = new foo2;
call_object_func($obj1); // echo foo1::func1
call_object_func($obj2); // echo foo2::func1
?>
就这么简单!
对于 C++ 之类的强类型语言,一个对象有两个类型:
定义时的类型(静态类型)
运行时的类型(动态类型)
所以需要“虚函数”,使对象的动态类型可以与静态类型不同。
而 PHP 是弱类型语言,对象只有运行时的类型,根本不存在“虚”的问题,或者说,PHP 的方法本来就是“虚”的,你还在哪里“寻寻觅觅”什么呢?
相关阅读 更多 +