首頁 >後端開發 >PHP問題 >php中繼承類別和實作介面的差別是什麼

php中繼承類別和實作介面的差別是什麼

WBOY
WBOY原創
2022-02-17 11:43:181710瀏覽

php中繼承類別與實作介面的差別:1、PHP繼承屬於單一繼承,保證了單一性,但不夠靈活,而實作介面就是對單一繼承的補充;2、實作介面可以在不破壞層級關係的前提下,對某個類別功能擴展。

php中繼承類別和實作介面的差別是什麼

本教學操作環境:windows10系統、PHP7.1版、DELL G3電腦

php中繼承類別與實作介面的差異

一、繼承與實作介面的比較:

(1)php繼承屬於單一繼承,保證了單一性,但不夠靈活。實作介面是對單一繼承的補充;

(2)實作介面可以在不破壞類別層級關係的前提下,對某個類別功能擴展。

<?php
  class Monkey {
      public $age;
      public $name;
      public function climbing() {
          echo "猴子会爬树<br/>";
      }
  }
  interface iBirdable {
      public function fly();
  }
  interface iFishable {
      public function swimming();
  }
  class LittleMonkey extends Monkey implements iBirdable,iFishable {
      public function fly() {
          echo "猴子还会飞<br/>";
      }
      public function swimming() {
          echo "猴子也会游泳<br/>";
      }
  }
  $littleMonkey = new LittleMonkey();
  $littleMonkey -> climbing();
  $littleMonkey -> fly();
  $littleMonkey -> swimming();
?>

二、final關鍵字:

1、如果某個類別不想被其他的類別繼承(從安全角度考慮的話),可用final修飾;

2 、如果希望某個方法不能被子類別改寫(不希望此方法被子類別方法重載),也可以用final修飾。

<?php  
class A{  
    final public function getRate($salary){  
        return $salary*0.08;  
    }  
}  
class B extends A{  
    //不能去覆盖父类的getRate方法.  
    /*public function getRate($sal){ 
        return $sal*0.01; 
    }*/  
}  
        
$b=new B();  
echo $b->getRate(100)."<br/>";  
?>

3、final不能修飾成員變數(屬性)。

三、const:

1、當一個屬性不希望被修改,可以考慮用const做成常數,如圓周率不能被竄改。

2、基本語法:

const 常數名 = 賦初值;

如果不賦初值,後面不可竄改就不能有值了。

3、常數不能寫修飾符,預設public但不能寫出來。

4、常數名一般全部用大寫字母命名。

5、呼叫語法:

在類別的內部使用:

self::常數的名稱或類別名稱::常數名稱;

在類別的外部使用:

介面名稱::常數;

#推薦學習:《PHP影片教學

以上是php中繼承類別和實作介面的差別是什麼的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn