類和對象
類是一組具有相同屬性和行爲的對象的抽象的,邏輯的,概念上的定義
一個對象可以有多個屬性和多個行爲,對象的屬性和行爲構成一個整體。
1.創建類
class class_name
{
var 屬性1; ###設定屬性
var 屬性2; ###設定屬性
function function_name1{ ###設定方法
}
function function_name1{ ###設定方法
}
}
2.實例化類
使用類,就必須要將這個類進行實例化
$name=new class_name()
3.方法的使用
對對象屬性進行的操作稱爲對象的方法
function function_name1
{ ###設定方法
// method declarations defined here
}
類的訪問控制
在聲明字段時,必須使用public,private,protected,final,const,static之一進行修飾
公有屬性 可以自由地在類的內部,外部讀取,修改 默認就是這個
改變屬性值 聲明爲public,定義屬性的時候可以不設置初始值,通過傳遞來給屬性賦值,如果設置了,也可以更具需要改變
私有屬性 在當前對象以外不能訪問。 子類也不能使用該類屬性
protected屬性 限定字段作用域在
public和private之間。 該類和該類的子類中可以使用該字段
const屬性 定義一個常量,定義的常量不能被改變。 const定義的常量不需要加$修飾符。
類的特性:
面嚮對象語言的三大特點:繼承 封裝 多態
繼承性:
class newclassname extends oldclassname
extends 表示繼承關係 oldclassname 被繼承的類 newclassname 創建的子類
多態性:
多態包括重載和重寫,當從父類繼承的方法不能滿足子類的需求,對父類進行改寫的過程稱爲重寫。
注意點:對父類進行重寫時,子類中的方法必須和父類的方法具有相同的名稱。
PHP不支持重載
構造函數:
當類被實例化的時候,會自動執行的函數。
函數名:_construct
class classname
function _construct([argument1,argument2,argument3])
{
/* class initialization code */
}
調用父類構造函數
構造函數還能調用其他構造函數,但不會自動調用父類的構造函數,在調用時必須使用parent關鍵字
析構函數:
在對象被銷燬時自動執行的函數稱爲析構函數。
class classname
function _destruct()
{
/* class initialization code */
}
使用其他方法調用析構函數:
$this關鍵字
$this在構造函數中指該構造函數所創建的新對象
在類中使用當前對象的屬性和方法,必須使用$this->取值
方法內的局部變量不屬於對象,不使用$this關鍵字取值
調用變量
調用當前對象的屬性值,必須使用$this關鍵字 通過符號->調用
調用其他方法
通過$this不但可以調用變量,而且可以直接調用類中的函數。
static關鍵字
靜態屬性
一個類的所有實例,共用類中的靜態屬性,訪問該類時,可不必實例化。直接使用屬性名加兩個冒號::直接訪問
靜態方法
如果將方法聲明爲靜態,則在類中不能用this來引用該方法,可以使用下面兩種方法引用
在類中 self::靜態成員名稱
在類外 類名稱::靜態成員名稱
final關鍵字
當在一個函數聲明前使用final關鍵字,則這個函數不能被任何子類重載。
final函數的調用
final函數不影響外部的調用,但會影響其被改變
final類不能被繼承
final修飾的類稱爲final類,並final修飾的類不能被繼承,如果繼承會出現錯誤。
final方法不能被重寫
final修飾的方法不能被重寫,如果重寫會出現錯誤。