第12章-面向?qū)ο蠡A(chǔ)_第1頁
第12章-面向?qū)ο蠡A(chǔ)_第2頁
第12章-面向?qū)ο蠡A(chǔ)_第3頁
第12章-面向?qū)ο蠡A(chǔ)_第4頁
第12章-面向?qū)ο蠡A(chǔ)_第5頁
已閱讀5頁,還剩54頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、,重慶工程職業(yè)技術(shù)學院,汪應(yīng),PHP基礎(chǔ)開發(fā),第12章 面向?qū)ο蠡A(chǔ),01 面向?qū)ο蟮幕靖拍?02 類的聲明,03 類的實例化,04 面向?qū)ο蟮姆庋b,05 面向?qū)ο蟮睦^承,06 static關(guān)鍵字,07 抽象類和接口,08 面向?qū)ο髮崿F(xiàn)多態(tài),09 面向?qū)ο蟮钠渌P(guān)鍵字,10 面向?qū)ο蟮某S媚g(shù)方法,1 面向?qū)ο蟮幕靖拍?主要內(nèi)容,類,對象,面向?qū)ο蟮奶攸c,01,02,03,類,類是屬性和方法的集合,是面向?qū)ο缶幊谭绞降暮诵暮突A(chǔ),通過類可以將零散的用于實現(xiàn)某項功能的代碼進行有效管理。,對象,實例化創(chuàng)建的數(shù)據(jù)庫連接類,調(diào)用數(shù)據(jù)庫連接類中的方法,完成與數(shù)據(jù)庫的連接操作。,面向?qū)ο蟮奶攸c,(1)

2、封裝性:就是將一個類的使用和實現(xiàn)分開,只保留有限的接口(方法)與外部聯(lián)系。 (2)繼承性:是派生類(子類)自動繼承一個或多個基類(父類)中的屬性與方法,并可以重寫或添加新的屬性或方法。繼承這個特性簡化了對象和類的創(chuàng)建,增加了代碼的可重用性。 (3)多態(tài)性:是指同一個類的不同對象,使用同一個方法可以獲得不同的結(jié)果。多態(tài)性增強了軟件的靈活性和重用性。,2 類的聲明,主要內(nèi)容,定義類,成員屬性,01,02,成員常量,成員方法,03,04,在PHP中,使用關(guān)鍵字class加類名的方式定義類,然后用大括號包裹類體,在類體中定義類的屬性和方法。,定義類,權(quán)限修飾符 class 類名 類體; ,語法,定義C

3、onnDB類,成員屬性,在類中直接聲明的變量稱為成員屬性。成員屬性的聲明必須用關(guān)鍵字來修飾,例如,public、protected、private等。,class ConnDB var $dbtype; var $host; var $user; var $pwd; var $dbname; var $debug; var $conn; ,成員常量,在類中定義常量使用關(guān)鍵字const。,const PI= 3.14159;,常量的輸出不需要實例化對象,直接由類名+常量名調(diào)用即可。,類名:常量名,格式,成員方法,在類中聲明的函數(shù)稱為成員方法。,class ConnDB function Conn

4、DB() / 方法體 function GetConnId() / 方法體 function CloseConnId() $this-conn-Disconnect(); ,3 類的實例化,主要內(nèi)容,對象的創(chuàng)建,訪問類中的成員,“$this”和“:”操作符,01,02,03,構(gòu)造方法和析構(gòu)方法,04,對象的創(chuàng)建,$變量名=new 類名稱(參數(shù));,語法,PHP中使用關(guān)鍵字new來創(chuàng)建一個對象。一個類可以實例化多個對象,每個對象都是獨立的。,$connobj1=new ConnDB(); $connobj2=new ConnDB(); $connobj3=new ConnDB();,訪問類中的成

5、員,$變量名=new 類名稱(參數(shù)); $變量名-成員屬性=值; $變量名-成員屬性; $變量名-成員方法;,語法,使用特殊的運算符號“-”訪問類中的成員。,“$this”和“:”操作符,使用$this變量可以引用該對象的其他方法和屬性,并使用“-”作為連接符。,“$this”操作符,$this-屬性名; $this-方法名;,“$this”和“:”操作符,操作符“:”可以在沒有聲明任何實例的情況下訪問類中的成員。,“:”操作符,關(guān)鍵字:變量名/常量名/方法名,語法,這里的關(guān)鍵字分為三種情況: parent關(guān)鍵字:可以調(diào)用父類中的成員變量、成員方法和常量。 self關(guān)鍵字:可以調(diào)用當前類中的靜

6、態(tài)成員和常量。 類名:可以調(diào)用本類中的變量、常量和方法。,構(gòu)造方法和析構(gòu)方法,構(gòu)造方法,function _construct(mixed args ,) /方法體 ,語法,構(gòu)造方法和析構(gòu)方法,析構(gòu)方法,function _destruct() / 方法體,通常是完成一些在對象銷毀前的清理任務(wù) ,語法,4 面向?qū)ο蟮姆庋b,主要內(nèi)容,公共成員關(guān)鍵字public,私有成員關(guān)鍵字private,保護成員關(guān)鍵字protected,01,02,03,公共成員關(guān)鍵字public,公共成員就是可以公開的、沒有必要隱藏的數(shù)據(jù)信息。可以在程序的任何地點(類內(nèi)、類外)被其他的類和對象調(diào)用。子類可以繼承和使用父類中

7、所有的公共成員。對于成員方法,如果沒有寫關(guān)鍵字,那么默認就是public。,私有成員關(guān)鍵字private,被private關(guān)鍵字修飾的變量和方法,只能在所屬類的內(nèi)部被調(diào)用和修改,不可以在類外被訪問,即使是子類也不可以。,class Book private $bookName=PHP從入門到實踐; public function setName($bookName) $this-bookName=$bookName; public function getName() return $this-bookName; $book=new Book(); $book-setName(PHP自學視頻教

8、程); echo 正確操作私有變量:; echo $book-getName(); echo 錯誤操作私有變量:; echo $book-bookName; /直接訪問私有變量出現(xiàn)錯誤,保護成員關(guān)鍵字protected,被protected修飾的類成員,可以在本類和子類中被調(diào)用,其他地方則不可以被調(diào)用。,class Car protected $carName=奧迪系列; class SmallCar extends Car public function say() echo 調(diào)用父類中的屬性:.$this-carName; $car=new SmallCar(); $car-say();

9、echo $car-carName;/直接訪問保護變量出現(xiàn)錯誤,5 面向?qū)ο蟮睦^承,主要內(nèi)容,繼承關(guān)鍵字extends,子類調(diào)用父類的成員方法,01,02,覆蓋父類方法,03,繼承關(guān)鍵字extends,class 子類名稱 extends 父類名稱 / 子類成員變量列表 function 成員方法()/ 子類成員方法 / 方法體 / 省略其他方法 ,語法,子類調(diào)用父類的成員方法,通過parent:關(guān)鍵字也可以在子類中調(diào)用父類中的成員方法。,parent:父類的成員方法(參數(shù));,語法,覆蓋父類方法,覆蓋父類方法的關(guān)鍵就是在子類中創(chuàng)建與父類中相同的方法,包括方法名稱、參數(shù)和返回值類型。,如果父類

10、和子類中都定義了構(gòu)造方法,當子類的對象被創(chuàng) 建后,將調(diào)用子類的構(gòu)造方法,而不會調(diào)用父類的構(gòu)造方法。,說明,6 static關(guān)鍵字,主要內(nèi)容,靜態(tài)屬性,靜態(tài)方法,01,02,靜態(tài)屬性,靜態(tài)屬性就是使用關(guān)鍵字static修飾的成員屬性。,類名稱:$靜態(tài)屬性名稱,語法,如果要在類內(nèi)部的成員方法中訪問靜態(tài)屬性,那么在靜態(tài)屬性的名稱前加上操作符“self:”即可。,靜態(tài)方法,靜態(tài)方法就是通過關(guān)鍵字static修改的成員方法。,類名稱:靜態(tài)方法名稱(參數(shù)1,參數(shù)2,),語法,靜態(tài)方法在對象不存在的情況下可以使用類名來訪問。在靜 態(tài)方法中只能訪問靜態(tài)成員,而在非靜態(tài)方法中可以使用類名或 self關(guān)鍵字訪問靜

11、態(tài)成員。,注意,7 抽象類和接口,主要內(nèi)容,抽象類,接口,01,02,抽象類,抽象類使用abstract關(guān)鍵字來聲明。,abstract class 抽象類名稱 /抽象類的成員變量列表 abstract function 成員方法1(參數(shù)); abstract function 成員方法2(參數(shù)); ,語法,接口,接口的聲明,interface 接口名稱 / 常量成員 / 抽象方法; ,語法,接口類通過interface關(guān)鍵字來聲明。,interface One const CONSTANT=CONSTANT value; function FunOne(); echo One:CONSTAN

12、T;,接口,接口的應(yīng)用,在子類中繼承接口使用implements關(guān)鍵字。如果要實現(xiàn)多個接口的繼承,那么每個接口之間使用逗號“,” 連接。,8 面向?qū)ο髮崿F(xiàn)多態(tài),主要內(nèi)容,通過繼承實現(xiàn)多態(tài),通過接口實現(xiàn)多態(tài),01,02,通過繼承實現(xiàn)多態(tài),【實例】創(chuàng)建一個抽象類type,用于表示各種交通方法,然后讓子類繼承這個type類。,通過接口實現(xiàn)多態(tài),【實例】定義接口Type,并定義一個空方法go_type()。然后定義Type_car和Type_Bus子類繼承接口Type。最后通過instanceof關(guān)鍵字檢查對象是否屬于接口Type。,9 面向?qū)ο蟮钠渌P(guān)鍵字,主要內(nèi)容,final關(guān)鍵字,clone關(guān)鍵

13、字,01,02,instanceof關(guān)鍵字,03,final關(guān)鍵字,被final修飾過的方法在子類中不可以進行重寫,也不可以被覆蓋。,final class class_name final function method_name() ,格式,clone關(guān)鍵字,克隆對象,$克隆對象名稱=clone $原對象名稱;,語法,對象的克隆可以通過關(guān)鍵字clone來實現(xiàn)。,clone關(guān)鍵字,克隆副本對象的初始化,魔術(shù)方法“_clone()”可以為克隆后的副本對象重新初始化。它不需要任何參數(shù),其中自動包含$this和$that兩個對象的引用。,instanceof關(guān)鍵字,instanceof操作符可以檢

14、測當前對象是屬于哪個類。,ObjectName instanceof ClassName,語法,10 面向?qū)ο蟮某S媚g(shù)方法,主要內(nèi)容,_set()和_get()方法,_isset()和_unset()方法,_call()方法,01,02,03,_toString()方法,04,_autoload()方法,05,_set()和_get()方法,_set()方法:在程序運行過程中為私有的成員屬性設(shè)置值,它不需要任何返回值。 _get()方法:在程序運行過程中,在對象的外部獲取私有成員屬性的值。,_isset()和_unset()方法,魔術(shù)方法_isset()的作用就是幫助isset()函數(shù)檢測私有成員屬性。,bool_isset(string name),語法,_unset()方法幫助unset()函數(shù)在類的外部刪除指定的私有成員屬性。,void_unset(string name),語法,_call()方法,_call()方法的作用是:當程序試圖調(diào)用不存在或不可見的成員方法時,PHP會先調(diào)用_call()方法來存儲方法名及其參數(shù)。,_toString()方法,魔術(shù)方法_toString()的作用是:當使用echo或print輸出對象時,將對象轉(zhuǎn)化為字符串。,(1)如果沒有_toString()方法,直接輸出對象將會發(fā)生致命錯誤(fatal

溫馨提示

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

評論

0/150

提交評論