在物件導向程式設計中,多態性允許物件根據類型呈現不同行為,例如衍生類別可覆寫父類別方法(方法重寫)。介面則規定了類別必須實現的方法集合,強制不同類別物件共享行為,例如定義 Printable 介面並由 Book 和 Magazine 類別實現,實現一致的行為。
PHP 物件導向程式設計的深入理解:多態性與介面的使用
在物件導向程式設計中,多態性和介面是提升程式碼靈活性和可維護性的關鍵概念。在這篇文章中,我們將深入探討多態性與介面的使用,並透過實戰案例來加深理解。
多態性
多態性允許物件表現出不同的行為,這取決於物件的類型。例如,父類別中的方法可以在衍生類別中被覆寫,這稱為方法重寫。
實戰案例:多態性
考慮下面一個範例,其中我們的Animal
類別充當父類別:
class Animal { public function makeSound() { echo "I'm an animal."; } }
現在,讓我們建立一個衍生類別Dog
,並覆寫makeSound
方法:
class Dog extends Animal { public function makeSound() { echo "Woof woof!"; } }
我們可以使用多態性來建立一個陣列來儲存各種Animal
物件:
$animals = [new Animal(), new Dog()]; foreach ($animals as $animal) { $animal->makeSound(); }
輸出:
I'm an animal. Woof woof!
介面
介面是一個規定了類別必須實作的方法集合的抽象類型。使用介面可以強制不同類別的物件具有共同的行為。
實戰案例:介面
##讓我們定義一個Printable 介面:
interface Printable { public function print(); }
Printable 介面的
Book 和
Magazine 類別:
class Book implements Printable { public function print() { echo "Printing a book..."; } } class Magazine implements Printable { public function print() { echo "Printing a magazine..."; } }
function print_items(array $printables) { foreach ($printables as $printable) { if ($printable instanceof Printable) { $printable->print(); } } }
print_items 函數:
print_items([new Book(), new Magazine()]);
Printing a book... Printing a magazine...
以上是PHP物件導向程式設計的深入理解:多態性與介面的使用的詳細內容。更多資訊請關注PHP中文網其他相關文章!