PHP學習——28 PHP面向物件(抽象類與抽象方法、介面的實現)
阿新 • • 發佈:2018-11-27
一、抽象類與抽象方法
<?php // 任何一個類,如果它裡面至少有一個方法是被宣告為抽象的,那麼這個類就必須被宣告為抽象的。 abstract class Person // 定義為抽象的類不能被例項化。 { public $name; public function __construct($name) { $this->name = $name; } // 被定義為抽象的方法只是聲明瞭其呼叫方式(引數),不能定義其具體的功能實現。 abstract protected function hello(); abstract protected function say(); public function show() { return "我的名字:".$this->name; } } class Worker extends Person { // 必須在子類中將抽象類的全部抽象方法全部實現才可以 public function hello() { return 'Hello '.$this->name; } public function say() { return 'Say '.$this->name; } } $worder = new Worker('小明'); echo $worder->hello(); // Hello 小明 echo '<hr>'; echo $worder->say(); // Say 小明 echo '<hr>'; echo $worder->show(); // 我的名字:小明 ?>
二、介面的實現
使用介面(interface),可以指定某個類必須實現哪些方法,但不需要定義這些方法的具體內容。
介面是通過 interface 關鍵字來定義的,就像定義一個標準的類一樣,但其中定義所有的方法都是空的。
介面中定義的屬性是類常量,定義的所有方法都必須是公有的抽象方法,所以public 、abstract 可不寫,這是介面的特性。
<?php interface Person1 { // 介面中定義的屬性必須是:類常量 const SITENAME = '我在學習PHP'; // 介面中定義的所有方法都必須是公有的抽象方法,所以public 、abstract 可不寫 function show(); function do(); } interface Person2 { function hello(); } // 介面不允許例項化,但可以被繼承,建立一個類繼承介面並實現所有的抽象方法 class Worker implements Person1,Person2 { public function show() { return self::SITENAME; } public function do() { return '我在寫程式碼~~'; } public function hello() { return 'PHP是非常好的一種語言~~'; } } $worker = new Worker(); echo $worker->show(); // 我在學習PHP echo '<hr>'; echo $worker->do(); // 我在寫程式碼~~ echo '<hr>'; echo $worker->hello(); // PHP是非常好的一種語言~~ ?>