第6章 面向?qū)ο蠡A(chǔ)知識(shí)_第1頁(yè)
第6章 面向?qū)ο蠡A(chǔ)知識(shí)_第2頁(yè)
第6章 面向?qū)ο蠡A(chǔ)知識(shí)_第3頁(yè)
第6章 面向?qū)ο蠡A(chǔ)知識(shí)_第4頁(yè)
第6章 面向?qū)ο蠡A(chǔ)知識(shí)_第5頁(yè)
已閱讀5頁(yè),還剩53頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

第6章面向?qū)ο蠡A(chǔ)知識(shí)01面向?qū)ο蟮幕靖拍?/p>

02類的聲明

03類的實(shí)例化04面向?qū)ο蟮姆庋b

05

面向?qū)ο蟮睦^承

06

static關(guān)鍵字

07

抽象類和接口

08

面向?qū)ο髮?shí)現(xiàn)多態(tài)09

面向?qū)ο蟮钠渌P(guān)鍵字

10

面向?qū)ο蟮某S媚g(shù)方法

1面向?qū)ο蟮幕靖拍钪饕獌?nèi)容

對(duì)象

面向?qū)ο蟮奶攸c(diǎn)

010203類

類是屬性(靜態(tài)特征)和方法(動(dòng)態(tài)特征)的集合,是面向?qū)ο缶幊谭绞降暮诵暮突A(chǔ),通過(guò)類可以將零散的用于實(shí)現(xiàn)某項(xiàng)功能的代碼進(jìn)行有效管理。對(duì)象

對(duì)象就是類的實(shí)例化,實(shí)例化創(chuàng)建的數(shù)據(jù)庫(kù)連接類,調(diào)用數(shù)據(jù)庫(kù)連接類中的方法,完成與數(shù)據(jù)庫(kù)的連接操作。面向?qū)ο蟮奶攸c(diǎn)(1)封裝性:就是將一個(gè)類的使用和實(shí)現(xiàn)分開,只保留有限的接口(方法)與外部聯(lián)系。(2)繼承性:是派生類(子類)自動(dòng)繼承一個(gè)或多個(gè)基類(父類)中的屬性與方法,并可以重寫或添加新的屬性或方法。繼承這個(gè)特性簡(jiǎn)化了對(duì)象和類的創(chuàng)建,增加了代碼的可重用性。(3)多態(tài)性:是指同一個(gè)類的不同對(duì)象,使用同一個(gè)方法可以獲得不同的結(jié)果。多態(tài)性增強(qiáng)了軟件的靈活性和重用性。2類的聲明主要內(nèi)容

定義類

成員屬性

0102

成員常量

成員方法

0304在PHP中,使用關(guān)鍵字class加類名的方式定義類,然后用大括號(hào)包裹類體,在類體中定義類的屬性和方法。定義類<?phpclassStudent{

//…}?>權(quán)限修飾符class類名{

類體;}語(yǔ)法定義ConnDB類成員屬性

在類中直接聲明的變量稱為屬性。成員屬性的聲明必須用關(guān)鍵字來(lái)修飾,例如,public、protected、private等。classConnDB{

private

var$dbtype;

private

var$host;

var$user;

var$pwd;

var$dbname;

var$debug;

var$conn; }成員常量

在類中定義常量使用關(guān)鍵字const。constPI=3.14159;常量的輸出不需要實(shí)例化對(duì)象,直接由類名+常量名調(diào)用即可。類名::常量名格式成員方法

在類中聲明的函數(shù)稱為成員方法。<?phpclassConnDB{privatevar$dbtype;privatevar$host;

public

functionConnDB(){

//方法體

}}$connobj1=newConnDB();//對(duì)象$connobj2=newConnDB(); $connobj3=newConnDB();?>3

類的實(shí)例化主要內(nèi)容

對(duì)象的創(chuàng)建

訪問(wèn)類中的屬性和方法

“$this”和“::”操作符010203

構(gòu)造方法和析構(gòu)方法04對(duì)象的創(chuàng)建$變量名=new類名稱([參數(shù)]);語(yǔ)法PHP中使用關(guān)鍵字new來(lái)創(chuàng)建一個(gè)對(duì)象。一個(gè)類可以實(shí)例化多個(gè)對(duì)象,每個(gè)對(duì)象都是獨(dú)立的。$connobj1=newConnDB();$connobj2=newConnDB(); $connobj3=newConnDB();訪問(wèn)類中的成員$變量名=new類名稱([參數(shù)]);$變量名->成員屬性=值;$變量名->成員屬性;$變量名->成員方法;語(yǔ)法使用特殊的運(yùn)算符號(hào)“->”訪問(wèn)類中的成員?!?this”和“::”操作符

使用$this變量可以引用該對(duì)象的其他方法和屬性,并使用“->”作為連接符。

“$this”操作符$this->屬性名;$this->方法名;“$this”和“::”操作符

操作符“::”可以在沒(méi)有聲明任何實(shí)例的情況下訪問(wèn)類中的成員。

“::”操作符關(guān)鍵字::變量名/常量名/方法名語(yǔ)法這里的關(guān)鍵字分為三種情況:parent關(guān)鍵字:可以調(diào)用父類中的成員變量、成員方法和常量。parent::PIself關(guān)鍵字:可以調(diào)用當(dāng)前類中的靜態(tài)成員和常量。self::PI類名:可以調(diào)用本類中的變量、常量和方法。類名::常量構(gòu)造方法和析構(gòu)方法

構(gòu)造方法function__construct([mixedargs[,…]]){ //方法體}語(yǔ)法構(gòu)造方法和析構(gòu)方法

析構(gòu)方法function__destruct(){ //方法體,通常是完成一些在對(duì)象銷毀前的清理任務(wù)}語(yǔ)法4面向?qū)ο蟮姆庋b主要內(nèi)容

公共成員關(guān)鍵字public

私有成員關(guān)鍵字private

保護(hù)成員關(guān)鍵字protected010203公共成員關(guān)鍵字public

公共成員就是可以公開的、沒(méi)有必要隱藏的數(shù)據(jù)信息??梢栽诔绦虻娜魏蔚攸c(diǎn)(類內(nèi)、類外)被其他的類和對(duì)象調(diào)用。子類可以繼承和使用父類中所有的公共成員。對(duì)于成員方法,如果沒(méi)有寫關(guān)鍵字,那么默認(rèn)就是public。私有成員關(guān)鍵字private

被private關(guān)鍵字修飾的變量和方法,只能在所屬類的內(nèi)部被調(diào)用和修改,不可以在類外被訪問(wèn),即使是子類也不可以。

classBook{ private$bookName="PHP從入門到實(shí)踐"; publicfunctionsetName($bookName){ $this->bookName=$bookName; } publicfunctiongetName(){ return$this->bookName; }}$book=newBook(); //實(shí)例化對(duì)象$book$book->setName("PHP自學(xué)視頻教程");echo"正確操作私有變量:";echo$book->getName();echo"<br>錯(cuò)誤操作私有變量:";echo$book->bookName; //直接訪問(wèn)私有變量出現(xiàn)錯(cuò)誤保護(hù)成員關(guān)鍵字protected

被protected修飾的類成員,可以在本類和子類中被調(diào)用,其他地方則不可以被調(diào)用。classCar{ protected$carName="奧迪系列";}classSmallCarextendsCar{ publicfunctionsay(){ echo"調(diào)用父類中的屬性:".$this->carName; }}$car=newSmallCar();$car->say();echo$car->carName; //直接訪問(wèn)保護(hù)變量出現(xiàn)錯(cuò)誤

5

面向?qū)ο蟮睦^承主要內(nèi)容

繼承關(guān)鍵字extends

子類調(diào)用父類的成員方法0102

覆蓋父類方法03繼承關(guān)鍵字extendsclass子類名稱extends父類名稱{ //子類成員變量列表

function成員方法(){ //子類成員方法

//方法體

} //省略其他方法}語(yǔ)法子類調(diào)用父類的成員方法

通過(guò)parent::關(guān)鍵字也可以在子類中調(diào)用父類中的成員方法。self::子類自己的成員方法parent::父類的成員方法(參數(shù));語(yǔ)法覆蓋父類方法

覆蓋父類方法的關(guān)鍵就是在子類中創(chuàng)建與父類中相同的方法,包括方法名稱、參數(shù)和返回值類型。如果父類和子類中都定義了構(gòu)造方法,當(dāng)子類的對(duì)象被創(chuàng)建后,將調(diào)用子類的構(gòu)造方法,而不會(huì)調(diào)用父類的構(gòu)造方法。說(shuō)明6

static關(guān)鍵字主要內(nèi)容

靜態(tài)屬性

靜態(tài)方法0102靜態(tài)屬性

靜態(tài)屬性就是使用關(guān)鍵字static修飾的成員屬性。類名稱::$靜態(tài)屬性名稱語(yǔ)法如果要在類內(nèi)部的成員方法中訪問(wèn)靜態(tài)屬性,那么在靜態(tài)屬性的名稱前加上操作符“self::”即可。靜態(tài)方法

靜態(tài)方法就是通過(guò)關(guān)鍵字static修改的成員方法。類名稱::靜態(tài)方法名稱([參數(shù)1,參數(shù)2,……])語(yǔ)法靜態(tài)方法在對(duì)象不存在的情況下可以使用類名來(lái)訪問(wèn)。在靜態(tài)方法中只能訪問(wèn)靜態(tài)成員,而在非靜態(tài)方法中可以使用類名或self關(guān)鍵字訪問(wèn)靜態(tài)成員。注意7

抽象類和接口主要內(nèi)容

抽象類

接口0102抽象類抽象類使用abstract關(guān)鍵字來(lái)聲明。abstractclassS{ //抽象類的成員變量列表

abstractfunction成員方法1(參數(shù)); abstractfunction成員方法2(參數(shù)); }ClassAextendsS{}語(yǔ)法接口

接口的聲明interface接口名稱{ //常量成員

//抽象方法;}語(yǔ)法

接口類通過(guò)interface關(guān)鍵字來(lái)聲明。interfaceOne{ constCONSTANT='CONSTANTvalue'; functionFunOne();}echoOne::CONSTANT;接口

接口的應(yīng)用

在子類中繼承接口使用implements關(guān)鍵字。如果要實(shí)現(xiàn)多個(gè)接口的繼承,那么每個(gè)接口之間使用逗號(hào)“,”連接。8

面向?qū)ο髮?shí)現(xiàn)多態(tài)主要內(nèi)容

通過(guò)繼承實(shí)現(xiàn)多態(tài)

通過(guò)接口實(shí)現(xiàn)多態(tài)0102通過(guò)繼承實(shí)現(xiàn)多態(tài)【實(shí)例】創(chuàng)建一個(gè)抽象類Type,用于表示各種交通方法,然后讓子類繼承這個(gè)type類。通過(guò)接口實(shí)現(xiàn)多態(tài)

【實(shí)例】定義接口Type,并定義一個(gè)空方法go_type()。然后定義Type_car和Type_Bus子類繼承接口Type。最后通過(guò)instanceof關(guān)鍵字檢查對(duì)象是否屬于接口Type。9

面向?qū)ο蟮钠渌P(guān)鍵字主要內(nèi)容

final關(guān)鍵字

clone關(guān)鍵字0102

instanceof關(guān)鍵字03final關(guān)鍵字被final修飾過(guò)的方法在子類中不可以進(jìn)行重寫,也不可以被覆蓋。finalclassclass_name{finalfunctionmethod_name()}格式clone關(guān)鍵字

克隆對(duì)象$克隆對(duì)象名稱=clone$原對(duì)象名稱;語(yǔ)法

對(duì)象的克隆可以通過(guò)關(guān)鍵字clone來(lái)實(shí)現(xiàn)。clone關(guān)鍵字

克隆副本對(duì)象的初始化

魔術(shù)方法“__clone()”可以為克隆后的副本對(duì)象重新初始化。它不需要任何參數(shù),其中自動(dòng)包含$this和$that兩個(gè)對(duì)象的引用。instanceof關(guān)鍵字

instanceof操作符可以檢測(cè)當(dāng)前對(duì)象是屬于哪個(gè)類。ObjectNameinstanceofClassName語(yǔ)法10

面向?qū)ο蟮某S媚g(shù)方法主要內(nèi)容

__set()和__get()方法

__isset()和__unset()方法

__call()方法010203

__toString()方法04

__autoload()方法05__set()和__get()方法

__set()方法:在程序運(yùn)行過(guò)程中為私有的成員屬性設(shè)置值,它不需要任何返回值。__get()方法:在程序運(yùn)行過(guò)程中,在對(duì)象的外部獲取私有成員屬性的值。_

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論