您好,登錄后才能下訂單哦!
封裝,繼承,多態是面向對象的三大特性,本文總結一下 php 是如何實現這三大特性的
class className{ public $attribute1 //成員屬性 //成員方法 function fun1(){ echo "method1" } }
abstract class className1{ //抽象方法 abstract public function fun1(); abstract private function fun2(); abstract protected function fun3(); }
抽象類至少有一個抽象方法
抽象類不能被實例化,只能被繼承 extends
繼承的派生類要把所有方法重載才能實例化對象
可以看做是一種成員屬性全部為抽象的抽象類,用作定義規范(面向接口編程)
interface IName { const NAME; function fun1(); }
接口中方法 必須全為 抽象方法
接口中成員方法和屬性為 public
接口成員屬性必須為常量
接口不能被實例化,只能被引用 implement
被引用后,派生類不許把所有方法重載才能實例化對象
實例化對象,使用 -> 訪問對象內容 (成員屬性和成員方法)
$instance1 = new className; //實例化對象 $instance1->attribute1; //訪問成員屬性 $instance1->method1(); //訪問成員方法
作用域 | public | protected | private |
---|---|---|---|
全局 | Yes | No | No |
繼承類 | Yes | Yes | No |
本類 | Yes | Yes | Yes |
類的成員方法前如不加封裝關鍵字,默認為public,不過最好加上關鍵字,便于閱讀
訪問當前 對象 中的成員屬性和成員方法
在不實例化的情況下訪問當前 類 的成員屬性和成員方法, 作用域在定義類時確定。該關鍵字常與 static, const 搭配使用,用于訪問靜態成員和常量
在不實例化的情況下訪問當前 類 的成員屬性或成員方法。常用于在派生類中訪問基類成員
php 只能單一繼承
class B extends A{ ...... }
用于引用接口,不同于繼承的單一性,一個類可以引用多個接口
class A implements demo1, demo2, demo3{ ...... }
先繼承后引用,單繼承多引用
class A extends B implements demo1, demo2, demo3{ ...... }
final class className1{ final func1(){ ...... } }
加了 final 關鍵字的類不能被繼承
基類中加了 final 關鍵字的成員方法不能在派生類中被重載
加了 static 關鍵字的成員方法和成員屬性不具備多態性,用于在不實例化的情況下訪問。靜態屬性單獨占用內存,不會在對象實例化時被反復創建。
class className1{ static $atrr1; static func1(){ ...... } }
用于在類中定義常量,類似用于在外部定義常量的PHP關鍵字 define(); const 只能修飾類中的成員屬性
class className1{ const NAME; }
常量一般用大寫字母命名,且常量不使用 $ 符號
用于判斷對象實例類型
$obj = new A(); if ($obj instanceof A) { echo 'A'; }
摘自php手冊
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。