<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      在 PHP 中,接口是一種定義方法但不實現它們的方式。接口可以被類實現,使得這些類承諾實現接口中定義的所有方法。接口主要用于定義類的共同行為,而不涉及具體的實現細節。以下是 PHP 接口的基本用法:

      定義接口

      interface Animal {
          public function makeSound();
          public function eat();
      }

      現在,Animal 接口定義了兩個方法:

      1. makeSound():用來讓動物發出聲音。
      2. eat():用來描述動物進食的行為。

      實現接口的類

      你需要在實現了 Animal 接口的類中提供這兩個方法的具體實現:

      phpCopy Code
      class Dog implements Animal {
          public function makeSound() {
              echo "汪汪";
          }
          
          public function eat() {
              echo "狗在吃食物";
          }
      }
      
      class Cat implements Animal {
          public function makeSound() {
              echo "喵喵";
          }
          
          public function eat() {
              echo "貓在吃食物";
          }
      }
      

      使用實現類

      你可以創建 DogCat 對象,并調用它們的 makeSound()eat() 方法:

      phpCopy Code
      $dog = new Dog();
      $dog->makeSound(); // 輸出: 汪汪
      $dog->eat(); // 輸出: 狗在吃食物
      
      $cat = new Cat();
      $cat->makeSound(); // 輸出: 喵喵
      $cat->eat(); // 輸出: 貓在吃食物
      

       

      關鍵點:

      • 接口不能包含屬性,只允許定義常量和方法。
      • 接口中的方法必須是公共的,且沒有方法體(即方法定義時不提供實現)。
      • 一個類可以實現多個接口,通過逗號分隔接口名稱。
      • 接口不能被實例化,只能通過實現接口的類來創建對象。

      接口提供了一種方式來定義不同類間的共同行為,從而支持多態和靈活的代碼結構。

       再來看下面這段代碼

      <?php
      
      interface Animals {
          const CHANGLIANG = "Fox";
          public function eat();
          public function sleep($hours);
          public static function jump();
      }
      
      class Cat implements Animals {
          public function eat() {
              echo "Cat 在吃飯.";
          }
      
          public function sleep($hours) {
              echo "Cat 要睡 $hours 小時.";
          }
      
          public static function jump() {
              echo '跳跳跳';
          }
      }
      
      $cat = new Cat();
      $cat->eat(); // 輸出: Cat 在吃飯.
      $cat->sleep(18); // 輸出: Cat 要睡 18 小時.
      echo Cat::CHANGLIANG; // 輸出: Fox
      echo Cat::jump(); // 輸出: 跳跳跳
      
      ?>

      由此可見,接口中可以聲明常量,并且在實現接口后可以直接調用接口中定義的常量。

      一個類還可以實現多個接口,如下:

      interface Movable {
          public function move();
      }
      
      interface Eatable {
          public function eat();
      }
      
      class Robot implements Movable, Eatable {
          public function move() {
              echo "機器人在移動";
          }
      
          public function eat() {
              echo "機器人在充電";
          }
      }
      $robot=new Robot;
      $robot->move();
      $robot->eat();

      回顯如下:

      [Running] D:\ceshi.test\6.php"
      機器人在移動機器人在充電
       

      抽象類和抽象方法用于創建不能被實例化的類,并強制子類實現特定的方法。以下是它們的基本用法:

      抽象類

      抽象類不能被直接實例化,只能被繼承。它可以包含抽象方法和普通方法。子類繼承抽象類后,必須實現抽象類中的所有抽象方法

      抽象方法

      抽象方法沒有實現,它僅定義了方法的聲明,不需要方法體。可以使用prorected ,但不能使用privare

      示例代碼

      <?php
      
      // 定義抽象類
      abstract class Animal {
          // 抽象方法(沒有實現)
          abstract public function makeSound();
          
          // 抽象方法(沒有實現)
          abstract protected function sleep($time);
      
          // 普通方法(有實現)
          public function eat($food) {
              echo "正在吃: " . $food . "<br>";
          }
      }
      
      // 子類繼承抽象類并實現抽象方法
      class Dog extends Animal {
          public function makeSound() {
              echo "汪汪汪<br>";
          }
      
          // 實現抽象方法
          protected function sleep($time) {
              echo "睡覺時間: " . $time . "小時<br>";
          }
      
          // 子類可以通過公共方法間接調用受保護的抽象方法
          public function sleepFor($time) {
              $this->sleep($time); // 調用子類實現的受保護方法
          }
      }
      
      // 創建子類實例
      $dog = new Dog();
      $dog->makeSound(); // 輸出: 汪汪汪
      $dog->eat("骨頭"); // 輸出: 正在吃: 骨頭
      $dog->sleepFor(8); // 輸出: 睡覺時間: 8小時
      
      ?>
      

      代碼解釋

      1. 抽象類 Animal:

        • abstract public function makeSound(); 仍然是一個抽象方法,用于定義子類必須實現的功能。
        • abstract protected function sleep($time); 被定義為抽象方法,子類必須實現它,并且是受保護的(protected),意味著只能在類內或子類中訪問。
        • public function eat($food); 繼續作為一個具體的公共方法,用于處理食物。
      2. 子類 Dog:

        • 實現了 makeSound() 方法。
        • 實現了 sleep($time) 抽象方法,并輸出睡覺時間。
        • 新增了一個公共方法 sleepFor($time),它調用 sleep($time),以便從類外部訪問 sleep 的功能。
      3. 實例化 Dog 類:

        • 調用 makeSound() 輸出 "汪汪汪"。
        • 調用 eat("骨頭") 輸出 "正在吃: 骨頭"。
        • 調用 sleepFor(8) 通過 Dog 類的方法調用實現的 sleep(8),輸出 "睡覺時間: 8小時"。

      關鍵點

      • 抽象方法 sleep($time) 現在是 protected,強制子類提供具體實現。
      • sleepFor($time) 作為公共方法提供了一種方式來調用 protected 抽象方法。
       
      抽象類和接口的區別

            1.抽象類可以包含非抽象方法的實現,而接口只能包含方法的聲明,沒有方法的實現。
            2.類只能繼承一個抽象類,但可以實現多個接口。
            3.抽象類可以有構造函數,而接口不能有構造函數。
            4.抽象類中的方法可以有public、protected和private訪問修飾符,而接口中的方法只能是public。
            5.子類繼承抽象類時,必須實現抽象類中的所有抽象方法,否則子類也必須聲明為抽象類。
            6.子類實現接口時,必須實現接口中的所有方法。

       
      posted on 2024-09-06 17:17  wilson'blog  閱讀(38)  評論(0)    收藏  舉報

      主站蜘蛛池模板: 久久天天躁狠狠躁夜夜2020老熟妇| 99在线视频免费观看| 九九热在线观看精品视频| 熟妇无码熟妇毛片| 欧美不卡无线在线一二三区观| 亚洲精品自拍在线视频| 国产午夜亚洲精品不卡下载| 秋霞无码一区二区| 国产精品一品二区三四区| 久热久热免费在线观视频| 精品乱人伦一区二区三区| 国产精品亚洲二区在线播放| 午夜福利日本一区二区无码| 亚洲色欲色欲www在线看| 亚洲色拍拍噜噜噜最新网站| 97精品久久久大香线焦| 国产亚洲精品成人aa片新蒲金 | 日韩国产中文字幕精品| 久久婷婷五月综合97色直播| 亚洲国产精品综合一区二区| 中文字幕日韩精品国产| 国产又大又粗又爽的毛片| 亚洲精品三区二区一区一| 国产精品亚洲中文字幕| 国产va在线观看免费| 五月丁香激激情亚洲综合| 亚洲激情av一区二区三区| 亚洲a人片在线观看网址| 国产日韩综合av在线| 国产91麻豆精品成人区| 大香伊蕉在人线国产免费| 色色97| 久久欧洲精品成av人片| av深夜免费在线观看| 伊人久久大香线蕉AV网禁呦| 国产免费午夜福利片在线| 久久亚洲精品日本波多野结衣| 青青草原国产精品啪啪视频| 国产91麻豆精品成人区| 日韩精品久久久肉伦网站| 成在人线av无码免费|