<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>

                ThinkChat2.0新版上線,更智能更精彩,支持會話、畫圖、視頻、閱讀、搜索等,送10W Token,即刻開啟你的AI之旅 廣告
                abstract 抽象類:?類成員方法中至少有一個被聲明為抽象(abstract),被聲明的方法只有定義沒有實現,訪問權限不能聲明為private,可以聲明屬性和類常量,不能被實例化,只能被其他類繼承或實現的特殊類. \[此定義是個人理解,其中"類成員方法中至少有一個被聲明為抽象"這句在代碼上看是有問題的,可見以下代碼實驗的第二條,但抽象類的意義是通過抽象方法來規范子類,如果一個抽象方法都沒有,就達不到這個要求,與普通class無異,與目的相違背,因此定義我依然不改,但要知道這個現象\] **1.抽象類中沒有被聲明為抽象的方法必須要實現** ~~~ <?php //錯誤示例:?非抽象方法沒有實現 abstract?class?mp3?{ ??public?function?music(); } ~~~ ( ! )?Fatal error: Non-abstract method mp3::music() must contain body in F:\\wamp\\www\\blog.54skyer.cn\\index.php on line?79 **2.抽象類中至少有一個方法被聲明為抽象.\[事實證明該定義錯誤,見代碼\]** ~~~ <?php abstract?class?mp3?{ ????public?function?music(){ ????????echo?"mp3?play?a?music"; ????} } ~~~ !!!執行沒有任何報錯,證明抽象類還真的可以沒有任何抽象方法.即抽象類中至少有一個方法被聲明為抽象是必要不充分條件,個人認為是PHP代碼設計的檢測缺陷.但是如果一個類里面包含了抽象方法,則類必須被聲明為抽象 **3.被聲明為abstract(抽象)的方法只有定義,沒有實現** ~~~ <?php //錯誤示例:?方法進行了實現 abstract?class?mp3?{ ????public?abstract?function?music(){ ????????echo?"mp3?play?a?music"; ????} } ~~~ ( ! )?Fatal error: Abstract function mp3::music() cannot contain body in F:\\wamp\\www\\blog.54skyer.cn\\index.php on line?81 ~~~ <?php //正確示例:?只有定義,沒有實現 abstract?class?mp3?{ ????public?abstract?function?music(); } ~~~ **4.抽象方法訪問權限不能被聲明為private(私有),因為抽象方法必須被子類繼承或實現,private不滿足** ~~~ <?php //錯誤示例:?抽象方法note聲明為私有 abstract?class?mp4?{ ????protected?abstract?function?vedio(); ????public?abstract?function?music(); ????private?function?note(); } ~~~ ( ! )?Fatal error: Abstract function mp4::note() cannot be declared private in F:\\wamp\\www\\blog.54skyer.cn\\index.php on line?81 **5.可以聲明類常量和屬性,子類覆寫父類的屬性和方法時,訪問權限不能比父類更嚴格,只能相同或者更寬松** ~~~ <?php ????abstract?class?MP3?{ ????????protected?abstract?function?music(); ????} ???? ????class?MP4?extends?MP3{ ????????private??function?music(){ ????} } $mp4?=?new?MP4(); $mp4->music(); ~~~ ( ! )?Fatal error: Access level to MP4::music() must be protected (as in class MP3) or weaker in F:\\wamp64\\www\\blog.54skyer.cn\\index.php on line?90 **6.不能被實例化** ~~~ <?php //錯誤示例:?實例化 abstract?class?mp3?{ public?abstract?function?music(); } $mp3?=?new?mp3(); ~~~ ( ! )?Fatal error: Cannot instantiate abstract class mp3 in F:\\wamp\\www\\blog.54skyer.cn\\index.php on line?81 **7.普通類繼承抽象類必須對其抽象方法進行實現,且實現的抽象方法要取消abstract關鍵字.** ~~~ <?php //錯誤示例:?普通子類沒有對抽象方法進行實現 abstract?class?mp3?{ ????public?abstract?function?music(); } class?ipod?extends?mp3?{ } $ipod?=?new?ipod(); $ipod->music(); ~~~ ( ! )?Fatal error: Class ipod contains 1 abstract method and must therefore be declared abstract or implement the remaining methods (mp3::music) in F:\\wamp\\www\\blog.54skyer.cn\\index.php on line?83 ~~~ <?php //正確示例:?普通子類對抽象方法進行實現,且取消abstract關鍵字 abstract?class?mp3?{ ????public?abstract?function?music(); } class?ipod?extends?mp3?{ ????public?function?music(){ ????????echo?"ipod?play?a?music"; ????} } $ipod?=?new?ipod(); $ipod->music(); ~~~ **8.抽象類繼承抽象類,子抽象類可以對父抽象類的抽象方法實現或者不實現,但是不能將父類的抽象方法重新聲明。**
                  <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>

                              哎呀哎呀视频在线观看