程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 網頁編程 >> PHP編程 >> PHP基礎知識 >> php 類與類對象的理解

php 類與類對象的理解

編輯:PHP基礎知識
 

類(Class):是一些變量與一些使用這些變量的函數的集合。
可簡單理解為函數和變量的集合,或變量和函數的定義的集合。


語法是:
class Class_name //習慣上類的第一個字符為大寫,並且必須符合變量的命名規則。
{
//函數與變量的集合(一些變量(類成員)和函數(行為方法)的定義)。
}


數據成員(變量)在類中使用"var"聲明來定義。
在給數據成員(變量)賦值前,它們是沒有類型的。
一個數據成員(變量)可以是一個整數,一個數組,一個相關數組(Associative Array)或者是一個對象。


類:是概念,是抽象的。
類的對象:是具體的事物,是物體,是實實在在的東西,是符合類的概念的具體事物。


類:是一段程序,一塊代碼,它總結了它的對象的一些共有的特點。
類的對象:是類的實例,就是說它符合類的特征。


類和類的對象:


有時是不用類的名稱來稱呼一個對象,而是直接使用對象的名稱。
例如我家有只狗,它的名字叫小白,這裡的狗是類名稱,而小白就是對象的名稱。


既然它要叫小白而不叫小黃,小黑,一定是它本身有不同於其他狗對象的地方,比如說毛發的顏色。
毛發的顏色,主人是誰等等都是用來描述這只狗的東西,我們稱之為屬性。
屬性是用來形容一個實例對象的,有了這些屬性,世界上每個對象都不相同。


每個對象也有它們自己的行為或者是使用它們的方法,比如說一只狗會跑會叫等,這些行為稱為方法。


屬性是對象靜態的一面,用來形容對象的一些特性,方法是對象動態的一面,可使用這些方法來操作一個對象。
屬性和方法合稱為這個對象的成員,它們是構成一個對象的主要部分,沒有這兩樣東西,對象就沒存在意義了。
哪怕只是一粒石頭,或者它沒有什麼操作的方法,但也有描述它的屬性。
也存在沒有屬性和方法的類,不過它的對象沒什麼作用,無法辨別和使用它,這種類的存在通常只有一個用途,就是作為一種規則,然後遵守這個規則的對象,才能去做某些特定的事情。


對象是由屬性和方法兩個基本的元素的構成的。
對象的屬性是指對象的背景色,長度,名稱等。
對象的方法是指對屬性所進行的操作,就是一個對象自己所屬的函數。


對象中包含屬性與方法,其中的屬性用來描述每個對象的特征,或者說,只要確定了屬性,就確定了對象。
對象中的方法描述了對象的操作,這些操作可以包括屬性的設置、讀取、顯示等。
因此,在實現以上所定義的對象時,需要提供完整的屬性與必需的方法。


對象的屬性是變量,必須使用->運算符來引用它們,不需在屬性前使用美元符$。
訪問對象中的成員,是通過“對象->成員”的方式訪問。


對象的內部成員間的調用
$this稱為偽變量,當一個方法在對象內部調用時使用。
(在定義類時,類的內部成員間相互調用時使用$this來表示本類、此類。通常在定義類中的變量和函數時會出現)
PHP提供本對象的引用$this,每個對象裡面都有一個對象的引用$this來代表這個對象,完成對象內部成員的調用。
this的本意就是“這個”的意思。
$this->屬性
$this->name; $this->age; $this->sex;
$this->方法
$this->say(); $this->run();


類有一種稱為構造函數的特殊方法。
當創建一個對象時,它將自動調用構造函數,也就是使用new這個關鍵字來實例化對象的時候自動調用構造方法。
構造函數的聲明與其它操作的聲明一樣,只是其名稱必須是__construct( )。
這是PHP5中的變化,以前的版本中,構造函數的名稱必須與類名相同,這種在PHP5中仍然可以用,但現在以經很少有人用了,這樣做的好處是可以使構造函數獨立於類名,當類名發生改變時不需要改相應的構造函數名稱了。


格式:function __construct ( [參數] ) { ... ... }
在一個類中只能聲明一個構造方法,而且只有在每次創建對象的時候都會去調用一次構造方法,不能主動的調用這個方法。
通常用它執行一些有用的初始化任務,比如對屬性在創建對象的時候賦初值。(初始化數據,賦給初始值)
例如:movie類包涵了一部電影的基本屬性:電影名、導演、主演、國家或地區和劇情介紹,這些都可以寫進構造函數__construct中。
例子:class SimpleClass
{
// 成員聲明
public $r = 2;
public $arr = array();
// 方法聲明
public function __construct() { //構造函數,初始類裡最重要元素、方法
echo "結果:";
}
private function oneVar(){
for($i=0; $i<=5; $i++){
$this->arr[$i] = ++$this->r;
}
return $this->arr; //返回本類中的成員變量
}
public function thisVar() {
print_r($this->oneVar()); //調用本類中的方法
echo "<br/>";
}
}
class SunClass extends SimpleClass { //子類,將繼承父類的一些特性
public function otherVar() {
SimpleClass::thisVar(); //靜態調用simpleclass類中的thisVar方法,好處是不用實例化
}
public function anotherVar() {
echo "我就是我!";
}
}
SunClass::anotherVar(); //不用實例化的調用
$a = new SunClass(); //實例化,創建一個對象
$a->otherVar();
$b = new SunClass(); //對同一個類實例化,創建另一個對象
$b->anotherVar();

 
  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved