1.封裝
概念:將內容裝到某個容器中進行儲存,在物件導向思想中,封裝指將資料和對資料的操作**到一起,形成對外界的隱蔽,同時對外可以提供可以操作的介面
資料:要操作的資料,即屬性
操作:資料加工過程,即方法
**到一起:即使用類結構將屬性,類常量,方法存放到一起,成為乙個整體
對外提供可操作的介面:即提供可以供外部訪問的的類成員(通常是方法)
例項:
#封裝特性
class
saler
}#外部$s=
newsaler()
;$s->
getmoney()
;
目的:
讓使用者只知道類能做什麼,而不知道怎麼做的
封裝特性也明確了類與物件的職責:類負責處理業務邏輯,物件只需呼叫實現
2.繼承
指的是子類可以直接訪問父類中已經存在的成員
<?php
# 父類
class
human
}class
manextends
human
;#子類為空類,沒有類成員$m=
newman()
;$m->
eat(
);
允許在子類中增加必要的父類不具有的功能
3.多型
發生必須要有繼承關係,且子類要重寫父類方法
多型指父類物件擁有子類形態,並且可以表現出子類的特性(呼叫子類方法)
php為弱型別語言,不支援多型
1.語法
基本語法:class 子類 extends 父類 {}
繼承後可訪問父類物件
2.有限繼承
1.繼承內容:父類所有公共成員,受保護成員,私有屬性,不能繼承父類的私有方法
2. 受保護(protect)成員是專門用於繼承的,可以再父類或者子類內部訪問
3. 滿足繼承條件下,子類可以訪問父類成員
4. 構造方法和析構方法都會被子類繼承
3.重寫
子類可以重寫父類任意類成員(私有除外)
屬性:直接覆蓋
方法:同時存在
要求:子類對成員控制權不能高於父類
子類重寫方法時,引數要求與父類一致
4.parent關鍵字
語法:parent::父類構造方法
使用parent後,在子類繼承父類後,呼叫子類時會先使用父類的構造方法再使用子類構造方法
parent不能訪問父類的屬性(靜態屬性可以)
5.php繼承特點
只能繼承乙個父類,若想繼承多個父類,可以使用鏈式繼承
6.靜態延遲繫結
使用static關鍵字代替self進行類成員訪問
注:靜態延遲繫結一定是通過繼承後的子類來訪問才有效果
# 靜態延遲繫結
#父類class
human
}#子類
class
manextends
human
human:
:showname()
;#子類呼叫
man:
:showname()
;
在編譯時:self::$name
=human::$name
編譯時:static::$name
=?:: $name
?就是誰來訪問就是誰
靜態延遲繫結如果在子類裡不重寫,就是靜態繫結
7.final最終類
使用final關鍵字修飾類名,表示此類不可再被繼承,只能例項化使用
還可以修飾方法,表示方法不可被重寫
作用:保護結構不被惡意擴充套件或者修改
基本語法:final class 類名{}
8.abstract抽象類
語法同final,表示此類只能被繼承,不能被例項化
修飾方法後,方法變成抽象方法,被繼承後,需要實現抽象方法才能被使用
抽象類可以繼承抽象類用於增加抽象方法
1.介面概念
與類相似,專門用來規範一些共性類必須實現的方法
介面不能例項化,類可以實現介面
基本語法:
inte***ce 介面名字
class 類名 implements 介面名字
作用:規範專案體系,提供一些必須的行為規範
如果要用就必須要實現這個介面
基本語法:
class 類名 implements 介面名
這樣就可以被例項化
2.介面成員
介面成員只能有兩類
介面常量:const
共有的介面方法(普通方法和靜態方法)
介面方法都是抽象方法
實現介面的類
可以訪問介面常量:介面常量不能被重寫
需要實現所有的介面方法
介面方法不允許增加許可權
注:介面方法必須被子類實現或類為抽象類,且不能重寫介面常量
#介面inte***ce
inte***ce
human
#實現介面:實體類
class
manimplements
human
public
static
function
show()
}#實現介面:抽象類
abstract
class
woman
implements
human
3.介面繼承
介面可以被繼承
目的:1. 實現介面的成員擴充套件:豐富介面內容,從而實現更好的對類的規範
2. 為了形成完整的介面體系,讓不同級別的類實現不同級別的介面
inte***ce
ainte***ce
b#介面繼承
inte***ce
cextends
a#介面多繼承
inte***ce
dextends
a,b
1.屬性過載
屬性過載魔術方法:
__get(屬性名)
:訪問不存在或者許可權不夠的屬性時觸發
__set(屬性名,屬性值)
:設定不存在或者許可權不夠的屬性時觸發
__isset(屬性名)
:判定不存在或者許可權不夠的屬性時觸發
__unset(屬性名)
:刪除不存在或者許可權不夠的屬性時觸發
__tostring()
:訪問物件時,自動呼叫的方法
一般系統內部使用的類不用過載,如果類對外提供操作那麼應該增加相應的過載機制以防出錯
2.方法過載
方法過載魔術方法:
__call(方法名,方法引數列表)
:訪問不存在或者許可權不夠的方法時觸發
__callstatic(方法名,方法引數列表)
:訪問不存在或者許可權不夠的靜態方法時觸發
C 學習第八天
介面 inte ce c 中介面定義的規則 1 介面本身的預設訪問級別為internal,即程式集本身訪問級別 2 介面中方法不能使用任何訪問修飾符 例如 public private internal protected 等修飾。系統自動為其設定為public 3 不能使用virtual修飾 4 ...
JS學習第八天
7.4 for in 使 更加的簡潔 7.5 陣列的應用 1.查詢 a.順序查詢 var a 3,7,11,43,87,5,99,56,82,16 var num number prompt 請輸入要查詢的值 var index 1 最初認為要找的值不在陣列中 for var i in a aler...
Linux C學習第八天
一 運算子與表示式 1.優先順序與結合性 優先順序 運算子的運算順序,優先順序低的先運算 結合性 優先順序相等的情況下,運算子按運算順序計算 2.基本算術運算子 取餘運算,結果的符號取決於運算子左邊那個數。3.型別轉換 強制轉換 在變數前使用括號進行轉換 int a int 1.2 隱式轉換 系統自...