<?php
abstract class Tiger {
public abstract function climp();
}
class XTiger extends Tiger{
public function climp(){
echo '摔下来';
}
}
class MTiger extends Tiger{
public function climp(){
echo '爬到树顶';
}
}
class Cat{
public function climp(){
echo '飞到天上';
}
}
class Client {
public static function call(Tiger $animal){
$animal->climp();
}
}
Client::call(new XTiger);
Client::call(new MTiger);
为什么先说多态? (Polymorphism)
答: 多态相对封装与继承,理解稍微复杂一些. 更重要的是,
通过PHP,Java多态的不同体现,体会静态语言与动态语言的巨大差异
而这个差异巨大,影响到设计模式. 对于动态语言,不可照搬java,C++中的设计模式
多态(Polymorphism) 是一个生物学上的概念, 指同一特种的多种表现形态.
如:西伯利亚虎一般重210-260公斤,而孟加拉虎一般180-230公斤
在面向对象中,指某种对象实例的不同表现形态. 多态特点,在静态语言中体现的更为明显.
西伯利亚虎不能爬树 孟加拉虎可以爬树 那么老虎,到底能否爬树? [ 请看java与PHP演示 体会静态与动态的巨大差异 ]