首頁  >  文章  >  後端開發  >  php類,接口,重載相關知識實例程式碼匯總

php類,接口,重載相關知識實例程式碼匯總

伊谢尔伦
伊谢尔伦原創
2017-06-29 13:36:58974瀏覽

這篇文章主要介紹了PHP類別相關知識點,結合實例形式總結分析了php類別相關的最終類別最終方法抽象類別、抽象方法、介面、重載、魔術方法等相關概念與操作技巧,需要的朋友可以參考下

本文實例總結了PHP類別相關知識點。分享給大家供大家參考,具體如下:

最終類別與最終方法

如果父類別中的方法被宣告為final,則子類別無法覆寫該方法。如果一個類別被宣告為 final,則不能被繼承。

final class a{}
class a{
  final public function A(){}
}

抽象類別與抽象方法

abstract class a {
  public abstract function func();
}
class A extends a{
  public function func(){}
}

#① 一個類別可以使用abstract宣告為抽象類別;抽象類別是不能實例化的類,只用作其他類別的父類別。

abstract class name{}

② 一個方法可以使用abstract宣告為抽象方​​法;抽象方法只需要宣告方法頭,不需要大括號部分的方法體。

abstract public function name($val);

③ 一個類別中有抽象方法,則該類別必須宣告為抽象類別。

④ 子類別繼承自一個抽象類,則子類別不行實作父類別中的所有抽象方法,除非子類別也繼續作為抽象類別。

⑤ 當子類別實作抽象父類別的方法時,存取控制符號範圍不能降低,且方法的參數也必須一致(重寫)。

介面

介面可以看成是抽象類別的更高層次的抽象,可以說是抽象類別的特例

interface a{
  function func();
}
class A implements a {
  function func(){}
}

類別:屬性、類別常數、方法

抽象類別:屬性、類別常數、抽象方法

介面:介面常數、抽象方法

① 相較於抽象類,介面可實現'多繼承'

class A implements a,b,c{}

② 一個介面只能繼承一個介面

interface a extends b{}

③ 其中方法都是抽象方法不用abstract修飾,即下級類別要麼實作介面的方法(implements),要麼也宣告為抽象方​​法

重載技術

1 . 屬性重載:如果使用不存在的屬性,就會呼叫類別中預先定義好的某個方法以處理資料;

對於屬性不用的應用場景,做如下處理

① 取值:自動呼叫類別中的get()
② 賦值:自動呼叫類別中的set()
③ 判斷是否存在:自動呼叫類別中的isset()
④ 銷毀:自動呼叫類別中的unset()

#前提是預先定義好這些方法,否則會報錯

<?php
class bee{
  public $ol = array();
  public function get($key){
    if(isset($this->ol[$key])){
      return $this->ol[$key];
    }
    return $key.&#39; not exists&#39;;
  }
  public function set($key,$val){
    $this->ol[$key] = $val;
  }
  public function isset($key){
    if(isset($this->ol[$key])){
      return true;
    }
    return false;
  }
  public function unset($key){
    unset($this->ol[$key]);
  }
}
$obj = new bee();
echo $obj->one;
echo &#39;<br>&#39;;
$obj->one = 1;
echo $obj->one;
echo &#39;<br>&#39;;
var_dump(isset($obj->one));

執行結果如下:

one not exists
1
boolean true

2. 方法重載:如果使用不存在的方法,就會呼叫類別中預先定義好的某個方法以處理該行為;

對於方法不用的應用場景,做如下處理

① 在物件中呼叫不可存取的方法:call()
② 靜態方式中呼叫不可存取方法: callStatic()

<?php
class bee{
  public function call($name,$arr){
    echo &#39;<br>&#39;;
    echo &#39;function &#39;.$name.&#39; not exist&#39;;
  }
  static function callStatic($name,$arr){
    echo &#39;<br>&#39;;
    echo &#39;function &#39;.$name.&#39; not exist&#39;;
  }
  /*public function call($name,$arr){
    $num = count($arr);
    if($num<1){
      $name();
    }else{
      $name = $name.&#39;_one&#39;;
      $name($arr[0]);
    }
  }*/
}
$obj->func();
bee::staFunc();
/*$obj->func(1);
function func(){
  echo &#39;<br>&#39;;
  echo &#39;no.0&#39;;
}
function func_one($val){
  echo &#39;<br>&#39;;
  echo &#39;no.&#39;.$val;
}*/

運行結果如下:

function func not exist
function staFunc not exist

注意:以上方法都屬於魔術方法,都帶有參數

以上是php類,接口,重載相關知識實例程式碼匯總的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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