<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ## 抽象類和接口的區別 ### 抽象類 PHP 5 支持抽象類和抽象方法。定義為抽象的類不能被實例化。任何一個類,如果它里面至少有一個方法是被聲明為抽象的,那么這個類就必須被聲明為抽象的。被定義為抽象的方法只是聲明了其調用方式(參數),不能定義其具體的功能實現。 繼承一個抽象類的時候,子類必須定義父類中的所有抽象方法;另外,這些方法的[訪問控制](https://link.jianshu.com?t=http://php.net/manual/zh/language.oop5.visibility.php)必須和父類中一樣(或者更為寬松)。例如某個抽象方法被聲明為受保護的,那么子類中實現的方法就應該聲明為受保護的或者公有的,而不能定義為私有的。此外方法的調用方式必須匹配,即類型和所需參數數量必須一致。例如,子類定義了一個可選參數,而父類抽象方法的聲明里沒有,則兩者的聲明并無沖突。 這也適用于 PHP 5.4 起的構造函數。在 PHP 5.4 之前的構造函數聲明可以不一樣的。 ### 對象接口 使用接口(interface),可以指定某個類必須實現哪些方法,但不需要定義這些方法的具體內容。 接口是通過 *interface* 關鍵字來定義的,就像定義一個標準的類一樣,但其中定義所有的方法都是空的。 接口中定義的所有方法都必須是公有,這是接口的特性。 #### 實現(*implements*) 要實現一個接口,使用 *implements* 操作符。類中必須實現接口中定義的所有方法,否則會報一個致命錯誤。類可以實現多個接口,用逗號來分隔多個接口的名稱。 > 實現多個接口時,接口中的方法不能有重名。 > 接口也可以繼承,通過使用 [extends](https://link.jianshu.com?t=http://php.net/manual/zh/language.oop5.inheritance.php) 操作符。 > 類要實現接口,必須使用和接口中所定義的方法完全一致的方式。否則會導致致命錯誤。 ### 區別 1.對接口的使用方式是通過關鍵字implements來實現的,而對于抽象類的操作是使用類繼承的關鍵字extends實現的,使用時要注意。 2.接口沒有數據成員,但是抽象類有數據成員,抽象類可以實現數據的封裝。 3.接口沒有構造函數,抽象類可以有構造函數。 4.的方法都是public類型,而抽象類中的方法可以使用private、protected或public來修飾。 5.一個類可以同時實現多個接口,但是只能實現一個抽象類。
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看