php學習之旅第八天

2021-10-03 12:41:28 字數 3591 閱讀 1494

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 隱式轉換 系統自...