PHP面向對象(抽象類與抽象方法、接口的實現)


一、抽象類與抽象方法

1,任何一個類,如果它里面至少有一個方法是被聲明為抽象的,那么這個類就必須被聲明為抽象的。

2,定義為抽象的類不能被實例化。

3, 被定義為抽象的方法只是聲明了其調用方式(參數),不能定義其具體的功能實現。 

4,必須在子類中將抽象類的全部抽象方法全部實現才可以

<?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是非常好的一種語言~~ ?>

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM