您好,登錄后才能下訂單哦!
private 私有的 私有的屬性不能直接在外面訪問
protected 受保護的 受保護的屬性 不能直接在外面訪問
__set($key,$value) $key--->沒有權限賦值的屬性名 $value 沒有權限賦值的屬性值
給一個沒有權限訪問的屬性賦值的時候自動調用
__get($key) $key----->沒有權限訪問的屬性名
訪問一個沒有權限的屬性的時候自動調用
public | protected | private | |
自己 | Y | Y | Y |
家族 | Y | Y | N |
外部 | Y | N | N |
面向對象的封裝
//public 自己 家族 外部 都可以訪問
//protected 自己 家族 可以訪問
//private 只有自己可以訪問
三、魔術方法(自動調用)
__construct() 在使用new關鍵字得到對象的是自動調用
__destruct() 在對象銷毀的時候 自動調用
__get() 在訪問一個沒有權限的屬性的時候自動調用
__set()在沒有權限賦值的時候自動調用
__isset() 在沒有權限使用isset函數判斷屬性的時候自動調用
__unset() 在沒有權限使用unset函數銷毀屬性的時候自動調用
面向對象的繼承
一、目標:
清除重復代碼
二、實現:
1. 將重復代碼提取出來
2. 建立聯系 extends 關鍵字 詞義是擴展 用于繼承
三、什么是父類 和子類
被繼承的類 成為父類(基類)
繼承其他類的類 成為 子類 (派生類)
四、繼承的特性(重點重點)
a) php只支持單繼承 只能有一個爹
b) php可以被多個繼承 一個爹可以有多個兒子
c) php支持多層繼承 可以有祖孫關系
B繼承A,C繼承B ,那么C里面就有ABC三個類里面的所有內容
d) 子類會擁有父類中的所有內容但是有部分內容無法訪問(封裝)
五、屬性繼承(重寫 重構)
1. 子類里面的屬性會覆蓋父類中的同名屬性
2. 訪問屬性的時候一定是最終結果(被子類覆蓋的結果,除了私有的)
3. 權限只能擴大 不能縮小
父類 | 子類 |
public | public |
protected | public protected |
private | public protected private |
六、方法繼承(重寫 重構)
1. 子類里面的方法會覆蓋父類中的同名方法
2. 訪問方法的時候一定是最終的結果(被子類覆蓋之后的結果 除了私有的)
3. 重寫的時候 參數結構(參數個數 和參數是否有默認值)建議保持一致
4. 權限只能擴大 不能縮小
父類 | 子類 |
public | public |
protected | public protected |
private | public protected private |
5. 可以調用父類中的方法 需要使用范圍操作符
:: A::say() parent::say()
parent 代表的是父類
要求: 重寫構造方法的時候 務必在第一行調用父類中的構造方法
七、關鍵字
1. final (最終的)(掌握)
final 可以修飾類和方法
被修飾的類不能被繼承
被修飾的方法不能重寫
2. static
a) 可以修飾屬性和方法 不能修飾類
b) 靜態成員需要使用范圍操作符來訪問 A::$name 如果你訪問的是靜態屬性一定要加上$ A::say()
c) 靜態的成員方法里面不能出現非靜態內容 $this 和非靜態成員
d) 靜態方法里面只能使用靜態屬性
3. const
可以在類里面定義常量
值保留類里面的屬性默認值特性
類里面定義的常量 需要使用范圍操作符類訪問
A::DB B::DB
4. define
不能在類里面定義常量
5. 運算符 instanceof
判斷前面的這個對象是否是后面這個類的實例
祖輩關系都行
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。