1.什麼是多態
多 態(Polymorphism)按字面上意思理解就是“多種形狀”。可以理解為多種表現形式,也即“一個對外接口,多個內部實現方法”。在面向對象的理論 中,多態性的一般定義為:同一個操作作用於不同的類的實例,將產生不同的執行結果。也即不同類的對象收到相同的消息時,將得到不同的結果。
在實際的應用開發中,采用面向對象中的多態主要在於可以將不同的子類對象都當作一個父類來處理,並且可以屏蔽不同子類對象之間所存在的差異,寫出通用的代碼,做出通用的編程,以適應需求的不斷變化。
<?php
/**
* Shape Interface
*
* @version 1.0
* @copyright
* (1)使用接口(interface),你可以指定某個類必須實現哪些方法,但不需要定義這些方法的具體內容。
* (2)我們可以通過interface來定義一個接口,就像定義一個標准的類一樣,但其中定義所有的方法都是空的。
* (3)接口中定義的所有方法都必須是public,這是接口的特性
*/
interface Shape {
public function draw();
}
/**
* Triangle
*
* @uses Shape
* @version 1.0
* @copyright
* (1)要實現一個接口,可以使用implements操作符。類中必須實現接口中定義的所有方法,否則 會報一個fatal錯誤。
* (2)如果要實現多個接口,可以用逗號來分隔多個接口的名稱。
*/
class Triangle implements Shape {
public function draw() {
print "Triangle::draw()\n";
}
}
/**
* Rectangle
*
* @uses Shape
* @version 1.0
* @copyright
*/
class Rectangle implements Shape {
public function draw() {
print "Rectangle::draw()\n";
}
}
/**
* Test Polymorphism
*
* @version 1.0
* @copyright
*/
class TestPoly {
public function drawNow($shape) {
$shape->draw();
}
}
$test = new TestPoly();
$test->drawNow(new Triangle());
$test->drawNow(new Rectangle());
?>