PHP學習筆記之類

2021-07-23 00:17:58 字數 3113 閱讀 2744

宣告類的關鍵字時class,宣告的格式如下:

訪問許可權修飾符 class 類名
其中,訪問許可權修飾符時可選的,常見的修飾符包括public、private和protected。預設情況下為public。

成員屬性必須使用關鍵字進行修飾,常見的關鍵字包括public、private和protected等。如果沒有特定的意義,仍然需要var關鍵字修飾。

當我們在定義乙個類的時候,我們可以將類的方法定義為一般方法和構造方法。構造方法在我們使用new關鍵字進行例項化物件的同時就會去呼叫執行我們所定義的構造方法。換而言之,我們可以通過構造方法在初始化類物件的時候就就對類成員屬性進行初始化。

構造方法的語法格式:

function _construct([mixed args])
注意:構造方法是不能有返回值(return)的。

類的析構方法是在物件被銷毀的時候呼叫的。

析構方法的語法格式:

function _destruct()
訪問器的語法格式:

function _set($propname,$propvalue){

$this->$propname=$propvalue;

}function _get($propname)

訪問器的兩個引數分別是屬性名和屬性值。

**例項:

<?php 

class guests

//當需要使用私有屬性值時呼叫

function _get($propname)

};$felix=new guests;

$felix->name="趙慶飛";

$felix->gender="男";

echo $felix->name."是".$felix->gender."

"; ?>

在上面的例項**中,我們newl乙個guests類的物件,當我們分別對這個物件的私有屬性進行賦值時就會呼叫_set()方法;我們最後需要輸出私有屬性的值時呼叫_get()方法。

繼承的關鍵字時extends,類繼承的格式如下:

class 子類類名 extends 父類類名
抽象類

抽象類使用abstract關鍵字進行宣告,抽象類的宣告語法格式如下:

abstract class 抽象類名{

abstract function 成員方法1(引數列表);

abstract function 成員方法2(引數列表);

抽象類的特點是:抽象類只能作為父類使用,因為抽象類的物件不能被例項化。抽象類與普通類的區別在於,抽象類的方法沒有方法內容,而且至少包含乙個抽象方法。抽象方法也必須使用abstract關鍵字,必須以;分號結束。

**例項:

abstract class myobject

//子類繼承了乙個抽象型別的父類

class mybook extends myobject

}$book=new mybook;//例項化抽象類的子類物件

$book->service("《php5.5從零開始學習》",30,2);

介面

因為php只支援單繼承,當我們需要實現多繼承的功能時就需要呼叫多個介面來實現,這就是介面存在的原因。

需要注意的是,介面類中不能宣告變數,只能使用const關鍵字宣告常量。

多型性是指同一操作作用於不同類的例項,將會產生不同的執行結果,即不同類的物件收到相同資訊時,得到不同的結果。在php中實現多型有兩種方法,包括通過繼承實現和通過介面實現。

通過繼承實現

<?php 

abstract class vegetables

//馬鈴薯類繼承蔬菜類

class vegetables_potato extends vegetables

}class vegetables_radish extends vegetables

}function change($obj)else

}echo "例項化vegetables_potato:";

change(new vegetables_potato());

echo "

";echo "例項化vegetables_ radish:";

change (new vegetables_radish ());

上面的例項**中,定義了乙個抽象的父類vegetables以及兩個繼承該父類的子類。從**中我們可以看出,兩個子類都實現了父類中的抽象方法,在呼叫chang方法是,我們傳入的分別傳入兩個不同的子類物件,然後相應的子類物件去呼叫定義的類方法

輸出結果:

例項化vegetables_potato():馬鈴薯

例項化vegetables_radish():蘿蔔

instanceof的作用:(1)判斷乙個物件是否是某個類的例項,(2)判斷乙個物件是否實現了某個介面。

通過介面實現

<?php

inte***ce vegetables

class vegetables_potato implements vegetables

}//vegetables_radish實現vegetables介面

class vegetables_radish implements vegetables

}//自定義方法根據物件呼叫不同的方法

function change($obj)else

}echo "例項化vegetables_potato:";

change(new vegetables_potato());//例項化vegetables_potato

echo "

"; echo "例項化vegetables_radish:";

change (new vegetables_radish ());

?>

實現原理與繼承方式類似就不再進行詳述。

php高階筆記之類

在類中定義的變數稱之為屬性,通常屬性跟資料庫中的字段有一定的關聯,因此也可以稱作 字段 屬性宣告是由關鍵字 public,protected 或者 private 開頭,後面跟乙個普通的變數宣告來組成。屬性的變數可以設定初始化的預設值,預設值必須是常量。訪問控制的關鍵字代表的意義為 public 公...

C 學習筆記之 類 物件

類是描述具有相同特徵和行為的抽象。物件是類的例項。類的作用就是分類!class關鍵字 class 類名 1 字段 類的共有屬性class car比如以上的brand,price,displacement 簡單的應用 using system namespace lesson12 class main...

C 學習筆記之類型別

兩個類即使成員完全相同,但名字不同,不屬於同乙個類 class a class b a obj1 b obj2 obj1 error,obj1和obj2型別不同 class a 前向宣告 對乙個類只宣告不定義 不完全型別 乙個類在宣告之後定義之前為不完全型別 不完全型別的3種有限的應用情景 定義指向...