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

                ??碼云GVP開源項目 12k star Uniapp+ElementUI 功能強大 支持多語言、二開方便! 廣告
                什么是抽象類 > 在面向對象的概念中,所有的對象都是通過類來描繪的,但是反過來,并不是所有的類都是用來描繪對象的,如果一個類中沒有包含足夠的信息來描繪一個具體的對象,這樣的類就是抽象類 抽象類的特性 1. 定義為抽象的類不能被實例化 2. 如果它里面至少有一個方法是被聲明為抽象的,那么這個類就必須被聲明為抽象的 3. 被定義為抽象的方法只是聲明了其調用方式(參數),不能定義其具體的功能實現 4. 繼承一個抽象類的時候,子類必須定義父類中的所有抽象方法(這些方法的訪問控制必須和父類中一樣(或者更為寬松)) 5. 子類可以定義一個可選參數(**也就是必須要有默認值**),而父類抽象方法的聲明里沒有,則兩者的聲明并無沖突 6. 抽象類可以沒有抽象方法,反過來有抽象方法的類一定要聲明為抽象類 7. 抽象方法可以為靜態方法 ~~~ <?php abstract class AbstractClass { // 強制要求子類定義這些方法 abstract protected function getValue(); abstract protected function prefixValue($prefix); // 普通方法(非抽象方法) public function printOut() { print $this->getValue() . "\n"; } } class ConcreteClass1 extends AbstractClass { //父類定義了倆個抽象方法,如子類只實現了其中一個,則報如下錯誤 //Fatal error: Class ConcreteClass1 contains 1 abstract //method and must therefore be declared abstract or //implement the remaining methods //(AbstractClass::prefixValue) public function getValue() { return "ConcreteClass1"; } // 且子類的訪問權限不能低于父類,如果將如下子類的訪問方式改為private則會報如下錯誤 //Fatal error: Access level to //ConcreteClass1::prefixValue() must be protected (as in //class AbstractClass) or weaker public function prefixValue($prefix) { return "{$prefix}ConcreteClass1"; } } //當實例化一個抽象類時,Fatal error: Cannot instantiate //abstract class AbstractClass //$obj = new AbstractClass(); // 但是我們可以這么使用 ########################################################## abstract class Foo { static function bar() { echo "test\n"; } } Foo::bar(); ########################################################## $obj = new ConcreteClass1(); echo $obj->getValue(); ~~~ 文章來源: http://blog.csdn.net/fationyyk/article/details/51005929
                  <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>

                              哎呀哎呀视频在线观看