//什麼時候使用繼承
1 在功能進行擴充套件的時候進行繼承
2 在功能進行修改的時候(覆蓋掉)
//php繼承特性
1 支援單一繼承 不支援多重繼承
2 乙個子類之允許有乙個父類
3 乙個父類可以有多個子類
//php 繼承關鍵字
父類 == 基類 == 超累
子類 == 擴充套件類 == 派生類
//許可權問題
public 共有的
1 在子類當中可以被完全繼承
2 子類的成員如果與父類當中的共有成員名稱相同 那麼子類成員會將父類的成員覆蓋
protected
1 受保護的成員 在子類當中可以被完全繼承下來
2 受保護的成員在子類當中如果出現同名的成員會被覆蓋掉
3 繼承下來的受保護的成員仍然擁有受保護的特性
private
1 私有成員在子類當中不能直接拿來使用 沒有被繼承
//許可權問題
1 如果父類當中成員屬性為私有的 在子類當中可以理解為繼承了下來 但是沒有放使用
2 如父類當中擁有共有的成員方法 該成員方法輸出父類當中私有的私有的私有成員屬性 在子類當中可以將該成員方法繼承使用 但是該成員方法擁有輸出父類私有成員屬性的特性同樣會被繼承
3 如果子類當中的成員屬性與父類的相同 子類的成員沒有辦法將父類的成員屬性覆蓋
4 父類成員的許可權一定要比子類成員許可權嚴格(小)
private < protected < public
//常用關鍵字 、
final 裝飾的成員方法不允許在子類當中被重寫 目的為了防止已經寫好的功能被修改
final 只能裝飾方法和類 不能裝飾成員屬性。
final 裝飾的類不能在被其他類繼承
static 裝飾成員屬性 在類當中當中的方法體當中要使用self::$屬性名稱來進行訪問
static 裝飾的成員屬性儲存在記憶體當中的初始化靜態段當中
在類當中使用$this->屬性 這個屬性是儲存在最當中因此 靜態的成員屬性不能夠使用$this去訪問
靜態的成員屬性在類的外部通過類名::$成員屬性名稱 切記不要使用物件來呼叫
靜態的成員屬性效率較高 因為不需要例項化成物件就可以訪問呼叫 (也就是說在類內部用self呼叫 外部就是類名呼叫)
同乙個類 多個物件訪問的靜態成員屬性是同乙個(共享成員屬性)
靜態的成員方法當中不允許有$this
靜態的成員方法在類的內部可以使用$this呼叫
靜態的成員方法可以在類的內部使用self::方法名()呼叫
靜態的成員方法在類的外部可以使用物件來呼叫
靜態的成員方法在類的外部可以使用類名::方法名()呼叫
推薦使用類名呼叫方式 效率較高 靜態的成員方法高於非靜態的方法
成員方法當中如果沒有包含任何$this 該方法預設為靜態的成員方法
//常量宣告
使用const 關鍵字
類名一般情況下採用大寫
常量值為標量資料型別
常量值不要加$
常量在類當中訪問使用self::常量名稱
常量在類外部訪問使用類名::常量名稱
instanceof 可以判讀乙個物件是否為乙個類例項化的
instanceof 可以判讀乙個物件是否為父類的子類的例項化出來的物件 可以追溯哦到父類
物件導向常用變數以及引數 作用 (一)
魔術方法 補充 忘記兩個 構造方法 1 方法名稱與類名稱相同的方法 2 construct 推薦使用 優先選擇 3 引數 不定 4 觸發時機 當物件new例項化的一瞬間自動呼叫這個方法 作用 隊成員進行初始化的操作 析構方法 1 方法名稱為 destruct 2 引數 無 3 觸發時機 當物件銷毀的...
物件導向繼承中成員變數的關係
在物件導向繼承問題中,子類和父類都會有其成員變數,那麼在訪問類中成員變數時,我們該如何進行理解呢?分為倆種情況 1 子類中成員變數和父類中成員變數的名稱不相同 理解方法 我們在訪問中,直接訪問其名稱即可,因為編譯器會根據你訪問的名稱進行匹配,匹配到相應的成員變數,如果沒有匹配到,則會自動報錯 2 子...
物件導向的封裝 繼承 多型以及建構函式
1 物件導向特點 封裝 繼承 多型。2 建構函式 構造器 原型物件 1 父類 function userclass name,age,word init初始化 userclass.prototype module.exports userclass var u1 new userclass 大雷 1...