封裝,繼承,多態(tài)是面向?qū)ο蟮娜筇匦?,本文總結(jié)一下 php 是如何實現(xiàn)這三大特性的
抽象類至少有一個抽象方法
抽象類不能被實例化,只能被繼承 extends
繼承的派生類要把所有方法重載才能實例化對象
可以看做是一種成員屬性全部為抽象的抽象類,用作定義規(guī)范(面向接口編程)
interface IName { const NAME; function fun1(); }接口中方法 必須全為 抽象方法
接口中成員方法和屬性為 public
接口成員屬性必須為常量
接口不能被實例化,只能被引用 implement
被引用后,派生類不許把所有方法重載才能實例化對象
實例化對象,使用 -> 訪問對象內(nèi)容 (成員屬性和成員方法)
$instance1 = new className; //實例化對象 $instance1->attribute1; //訪問成員屬性 $instance1->method1(); //訪問成員方法作用域 | public | protected | private |
---|---|---|---|
全局 | Yes | No | No |
繼承類 | Yes | Yes | No |
本類 | Yes | Yes | Yes |
類的成員方法前如不加封裝關(guān)鍵字,默認為public,不過最好加上關(guān)鍵字,便于閱讀
訪問當前 對象 中的成員屬性和成員方法
在不實例化的情況下訪問當前 類 的成員屬性和成員方法, 作用域在定義類時確定。該關(guān)鍵字常與 static, const 搭配使用,用于訪問靜態(tài)成員和常量
在不實例化的情況下訪問當前 類 的成員屬性或成員方法。常用于在派生類中訪問基類成員
php 只能單一繼承
class B extends A{ ...... }用于引用接口,不同于繼承的單一性,一個類可以引用多個接口
class A implements demo1, demo2, demo3{ ...... }先繼承后引用,單繼承多引用
class A extends B implements demo1, demo2, demo3{ ...... }加了 final 關(guān)鍵字的類不能被繼承
基類中加了 final 關(guān)鍵字的成員方法不能在派生類中被重載
加了 static 關(guān)鍵字的成員方法和成員屬性不具備多態(tài)性,用于在不實例化的情況下訪問。靜態(tài)屬性單獨占用內(nèi)存,不會在對象實例化時被反復創(chuàng)建。
class className1{ static $atrr1; static func1(){ ...... } }用于在類中定義常量,類似用于在外部定義常量的PHP關(guān)鍵字 define(); const 只能修飾類中的成員屬性
class className1{ const NAME; }常量一般用大寫字母命名,且常量不使用 $ 符號
用于判斷對象實例類型
$obj = new A(); if ($obj instanceof A) { echo 'A'; }摘自php手冊
另外有需要云服務器可以了解下創(chuàng)新互聯(lián)cdcxhl.cn,海內(nèi)外云服務器15元起步,三天無理由+7*72小時售后在線,公司持有idc許可證,提供“云服務器、裸金屬服務器、高防服務器、香港服務器、美國服務器、虛擬主機、免備案服務器”等云主機租用服務以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡單易用、服務可用性高、性價比高”等特點與優(yōu)勢,專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應用場景需求。