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

                ??一站式輕松地調用各大LLM模型接口,支持GPT4、智譜、豆包、星火、月之暗面及文生圖、文生視頻 廣告
                ## **abstract 抽象類** >[info]抽象類就是定義規則的保持子類行為統一 ?抽象類特點:???? * 1.抽象類是指在class前加了abstract關鍵字且存在抽象方法(在類方法function關鍵字前加了abstract關鍵字)的類。 * 2.抽象類不能被直接實例化。抽象類中只定義(或部分實現)子類需要的方法。子類可以通過繼承抽象類并通過實現抽象類中的所有抽象方法,使抽象類具體化。 * 3.如果子類需要實例化,前提是它實現了抽象類中的所有抽象方法。如果子類沒有全部實現抽象類中的所有抽象方法,那么該子類還是一個抽象類,必須在class前面加上abstract關鍵字,并且不能被實例化。**子類繼承**抽象類,就必須**定義(相當于重寫)實現**抽象類中的方法;即抽象父類中帶有abstract的方法必須被子類繼承,否則子類還是抽象類,也不能實例化 * 4:可以定義屬性、方法、抽象方法 * 5:抽象方法沒有方法體(即無花括號)abstract public function eat(); * 6:抽象類不能實例化只能被子類繼承調用? 定義了抽象類,就是讓你子類繼承,實現具體的抽象方法 * 7:抽象類中可以沒有抽象方法,但是有抽象方法的類必須定義為抽象類 例子1: ``` abstract?class?AbstractClass { ? //?強制要求子類定義這些方法 ????abstract?protected?function?getValue(); ????abstract?protected?function?prefixValue($prefix); ????//?普通方法(非抽象方法) ????public?function?printOut()?{ ????????print?$this\->getValue()?.?"\\n"; ????} } class?ConcreteClass1?extends?AbstractClass { ????protected?function?getValue()?{ ????????return?"ConcreteClass1"; ????} ????public?function?prefixValue($prefix)?{ ????????return?"{$prefix}ConcreteClass1"; ????} } $class1?=?new?ConcreteClass1; ``` **列子:2** ``` abstract class Person { ??? // 屬性 ??? public $name = '芙蓉姐姐'; ??? protected $sex = 'Unknown'; ????private $age = 18; ??? public function say() ??? { ??????? echo '上課了,就不要睡覺覺了'; ??? } ??? // 抽象方法 ??? abstract public function eat();//1抽象方法無花括號;2抽象類可以沒有抽象方法只要Person類前加了abstract不要這行代碼也是抽象類 } // 實例化Person類 $p = new Person; // Cannot instantiate(實例化) abstract class Person 不能被實例化 class girl extends Person{ ?public function eat(){ ???echo'吃東西吃出大姨媽了'; ?} }? $pp=new girl(); var_dump($pp);//object(girl)#1 (3) { ["name"]=> string(12) "芙蓉姐姐" ["sex":protected]=> string(7) "Unknown" ["age":"Person":private]=> int(18) } $pp->say();上課了,就不要睡覺覺了' $pp->eat();//吃東西吃出大姨媽了 ``` php7.2起,當一個抽象類繼承于另外一個抽象類的時候,繼承后的抽象類可以重寫被繼承的抽象類的抽象方法 ~~~ abstract class A { abstract function test(string $s); } abstract class B extends A { // 覆蓋 - still maintaining contravariance for parameters and covariance for return abstract function test($s) : int; } ~~~
                  <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>

                              哎呀哎呀视频在线观看