php基礎 物件導向

2022-07-09 14:54:08 字數 3399 閱讀 3310

物件導向和面向過程的區別:優缺點

類 : 具有相同特性和行為的物件的抽象就是類。因此,物件的抽象是類,類的具體化就是物件,也可以說類的例項是物件,類實際上就是一種資料型別。

在物件導向的程式語言中,「類」 是乙個獨立的程式單位,它應該有乙個類名幷包括 「屬性」 說明和「方法」 說明兩個主要部分。

類的成員

類的成員主要包括 屬性 和 方法。

屬性 : 又叫成員屬性或成員變數 , 其本質就是變數,但是它也是和某個具體的類是繫結起來的。它就是

這個類的特徵,比如說狗的體重、身高等等。

方法 : 又叫成員方法 , 其本質就是函式, 但是它也是和某個具體的類是繫結起來的。 它是這個類的一些

固有的行為,比如說狗的奔跑、吃飯、睡覺等等。

物件的成員

既然物件是類的單獨的乙個個體 , 那麼這個物件也會有該類的屬性和方法:

物件的狀態(屬性) : 乙個物件用資料值來描述它的狀態。

物件的操作(方法) : 用於改變物件的狀態,物件及其操作就是物件的行為。

物件實現了資料和操作的結合,使資料和操作封裝於物件的統一體中。

思考 : 狗的毛色是屬性還是方法? 狗的嗅覺是屬性還是方法?狗吃東西是屬性還是方法?

物件導向程式設計的三大特性 封裝 , 繼承 , 多型

定義屬性標語法格式:

訪問許可權修飾符 屬性名[= 預設值];

public $name = '小白';
需要注意的是 , 定義屬性的時候 , 訪問許可權修飾符必須存在(不能省略)。

定義方法語法格式: [訪問許可權修飾符] 方法/函式識別符號 方法名 (引數...) {}

public function eat()
乙個完整的類包含屬性和方法。

訪問修飾符:

1.public !

public : 被定義為公有的類成員可以在任何地方被訪問。

在子類中可以通過 self::屬性名(或方法名)  呼叫public方法或屬性,parent::方法名 呼叫父類方法

在例項中可以能過 $obj->屬性名(或方法名) 來呼叫 public型別的方法或屬性

2.protected (了解)

protected : 被定義為受保護的類成員則可以被其自身以及其子類和父類訪問。

在子類中可以通過 self::屬性名(或方法名) 呼叫protected方法或屬性,parent::屬性名(或方法名) 呼叫父

類方法。

在例項中不能通過 $obj->屬性名(或方法名) 來呼叫  protected型別的方法或屬性

3.private (了解)

private : 被定義為私有的類成員則只能被其定

義所在的類訪問。

在該類的例項、子類中、子類的例項中都不能呼叫私有型別的屬性和方法

以上主要學習了如何定義乙個類,成員呼叫(訪問許可權修飾)

構造方法與析構方法

構造方法(construct) :是一種特殊的方法。物件的建立就是通過構造方法來完成,其功能主要是完成對

象的初始化, 它可以有引數,也可以沒有引數。當類例項化乙個物件時會自動呼叫構造方法。

構造方法的兩大作用: 1. 構造出來乙個類的例項 2. 對構造出來的乙個類的例項(物件)初始化

構造方法的特點:

①構造方法名和類名相同(php4版),php5版之後的構造方法名可以和類名相同,也可以是

__construct();

②構造方法沒有返回值;

③構造方法的主要作用是完成對新物件的初始化,並不是建立物件本身;

④在建立新物件後,系統會自動的呼叫該類的構造方法,不需要自己寫**呼叫;

⑤乙個類有且只有乙個構造方法,在php5後雖然__construct() 和 類名() 可以共存,但是實際上也

只能使用乙個;

⑥如果沒有給類自定義構造方法,則該類使用系統預設的構造方法;

⑦如果給類自定義了構造方法,則該類的預設構造方法被覆蓋;

⑧構造方法的預設訪問修飾符是public。

析構函式(destructor) 與構造方法相反,當物件結束其生命週期,如物件所在的函式已呼叫完畢時,系

統自動執行析構函式。析構函式往往用來做「清理善後」 的工作。

析構方法的寫法(不用自己寫,系統在結束的時候會自己給):

function __construct()

function __destruct()

function show()

魔術方法 : 我們前面介紹的__construct,這個方法就是乙個特殊方法,它會在類被例項化的時候自動調

用。這些特殊方法也往往稱之為「魔術方法」,而且也多以 「雙下劃線」 開頭,其目的就是和普通的方法名

進行區分。

注意 : 魔術方法不需要自己手動呼叫 只要有符合對應魔術方法的情況 , 它自己就會執行 , 魔術方法並不

是為了固定的執行某個功能 , 而是觸發後執行自定義的功能。

魔術方法的作用 :是更好的物件導向,增強程式的健壯性,以及更多的技巧性的東西。

注意:在靜態方法中可以呼叫靜態成員, 但是無法呼叫普通成員。

靜態成員的特點總結:

靜態資料成員和普通資料成員區別較大,體現在下面幾點:

普通資料成員屬於類的乙個具體的物件,只有物件被建立了,普通資料成員才會被分配記憶體。而靜

態資料成員屬於整個類,即使沒有任何物件建立,類的靜態資料成員變數也存在。

因為類的靜態資料成員的存在不依賴與於任何類物件的存在,類的靜態資料成員應該在**中被顯

式地初始化,一般要在類內進行。

外部訪問類的靜態成員能直接通過類名來訪問。

類例項化物件可以訪問靜態方法,但不能訪問靜態屬性

類的靜態成員函式無法直接訪問普通資料成員(可以通過物件名間接的訪問),而類的任何成員函

數都可以訪問類的靜態資料成員。

靜態成員和類的普通成員一樣,也具有public、protected、private3種訪問級別。

類常量(const)

以前定義常量使用 'define' 函式定義 , 這種常量是全域性常量 , 在任何地方都可以被訪問到 , 而類常量則是

專屬於該類的常量。

1.定義類常量

定義類常量的格式:

const 常量名 = 值;

類常量和靜態屬性類似 , 呼叫也需要使用 範圍解析符 '::' 。

類常量的呼叫格式:

類名::類常量名;

類全域性常量和全域性常量的區別:

總結 : 全域性常量可以不用使用任何識別符號直接在任何地方呼叫到 , 而類常量必須使用對應的類名稱或代

錶類名稱的關鍵字來使用。

繼承: 是指建立乙個新的派生類,從乙個先前定義的類中繼承資料和函式,而且可以重新定義或加進新

資料和函式,從而建立了類的層次或等級。而派生類就是從乙個類衍生出的類。

PHP物件導向基礎

1 constract 建構函式知識點 a 例項化物件的時候,如果子類沒有建構函式,就呼叫父類的建構函式。如果子類有建構函式,這首先呼叫自己。b 呼叫父類的建構函式 parent constract 2 php不支援多重繼承,因為多重繼承容易產生二義性。但如果讓c b a,就可以實現多重繼承的功能。...

php基礎 物件導向

物件導向的申明方式 物件class one b newone b aa 建構函式建構函式 是一種特殊的方法。主要用來在建立物件時初始化物件,即為物件成員變數賦初始值,總與new運算子一起使用在建立物件的語句中。php 5 允行開發者在乙個類中定義乙個方法作為建構函式,語法格式如下 class sit...

PHP物件導向的基礎

1 使用extends實現繼承以及過載 魔術方法的含義 class b extends a 宣告的時候b裡可以沒有a裡的方法 呼叫的時候 b new b b a裡的方法 b a裡的屬性 1 b b裡的方法 b b裡的方法 如果 a new a 可以 a a裡的方法 a a裡的屬性 1 不可以 a b...