這篇文章主要介紹了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.' not exists'; } 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 '<br>'; $obj->one = 1; echo $obj->one; echo '<br>'; var_dump(isset($obj->one));
執行結果如下:
one not exists 1 boolean true
2. 方法重載:如果使用不存在的方法,就會呼叫類別中預先定義好的某個方法以處理該行為;
對於方法不用的應用場景,做如下處理
① 在物件中呼叫不可存取的方法:call()
② 靜態方式中呼叫不可存取方法: callStatic()
<?php class bee{ public function call($name,$arr){ echo '<br>'; echo 'function '.$name.' not exist'; } static function callStatic($name,$arr){ echo '<br>'; echo 'function '.$name.' not exist'; } /*public function call($name,$arr){ $num = count($arr); if($num<1){ $name(); }else{ $name = $name.'_one'; $name($arr[0]); } }*/ } $obj->func(); bee::staFunc(); /*$obj->func(1); function func(){ echo '<br>'; echo 'no.0'; } function func_one($val){ echo '<br>'; echo 'no.'.$val; }*/
運行結果如下:
function func not exist function staFunc not exist
注意:以上方法都屬於魔術方法,都帶有參數
以上是php類,接口,重載相關知識實例程式碼匯總的詳細內容。更多資訊請關注PHP中文網其他相關文章!