php 設計模式 之 interface 接口簡介

須知

  1. 與大多數抽象類同樣,interface 也有抽象方法,無論不能和抽象類同樣在接口中包含具體的方法或變量(作爲抽象性的例外)
  2. 通常約定接口總以字母 I 或者 i 開頭
  3. 接口中定義的全部方法都必須是public,這是接口的特性
  4. 實現多個接口時,接口中的方法不能有重名。
  5. 接口也能夠繼承,經過使用 extends 操做符。
  6. 類要實現接口,必須使用和接口中所定義的方法徹底一致的方式。不然會致使致命錯誤。
  7. 接口中也能夠定義常量。接口常量和類常量的使用徹底相同,可是不能被子類或子接口所覆蓋。

理解

PHP接口類interface就是一個類的領導者,指明方向,子類必須完成它指定方法this

簡單代碼示範

/**
 * interface 接口
 * 與大多數抽象類同樣,interface 也有抽象方法,無論不能和抽象類同樣在接口中包含具體的方法或變量(作爲抽象性的例外)
 * 通常約定接口總以字母 I 或者 i 開頭
 * 接口中定義的全部方法都必須是public,這是接口的特性
 */

// 定義一個接口類,以 interface 開頭而不是 class
interface ISMS{

    // 能夠定義常量
    const USERNAME = 'hhh';

    // 定義的方法,子類必須實現
    public function getInfo($info);

    public function sendInfo($info);

}

// 實現一個接口,使用 implements 而不是 extends
class Register implements ISMS{

    // 使用接口常量,須要用 做用域解析操做符
    private $username = ISMS::USERNAME;

    public function getInfo($info){
        return 'getInfo=>'.$info;
    }

    public function sendInfo($info){
        return 'sendInfo=>'.$info;
    }

    public function getUserName(){
        return $this->username;
    }

}

$test = new Register();
echo $test->getInfo('Enda'); // getInfo=>Enda
echo $test->sendInfo('Enda'); // sendInfo=>Enda

echo $test->getUserName(); // hhh
相關文章
相關標籤/搜索