類的靜態成員

2022-04-02 07:43:46 字數 1094 閱讀 6742

類的靜態成員

類的靜態成員與一般的類成員不同: 靜態成員與物件的例項無關,只與類本身有關. 他們用來實現類要封裝的功能和資料,但不包括特定物件的功能和資料. 靜態成員包括靜態方法和靜態屬性.

靜態屬性包含在類中要封裝的資料,可以由所有類的例項共享. 實際上,除了屬於乙個固定的類並限制訪問方式外,類的靜態屬性非常類似於函式的全域性變數

我們在下例中使用了乙個靜態屬性counter::$count. 它屬於counter類,而不屬於任何counter的例項.你不能用this來引用它,但可以用self或其它有效的命名表達. 在例子中,getcount方法返回self::$count,而不是counter::$count.

靜態方法則實現類需要封裝的功能,與特定的物件無關. 靜態方法非常類似於全域性函式. 靜態方法可以完全訪問類的屬性,也可以由物件的例項來訪問,不論訪問的限定語是否是什麼.

在6.3例中,getcount是乙個普通的方法,用->來呼叫. php建立乙個this變數,儘管方法沒有使用到.但是,getcount不屬於任何物件.在有些情況下,我們甚至希望在不存在有效的物件時呼叫它,那麼就應該使用靜態方法. php將不在靜態方法內部建立this變數,即使你從乙個物件中呼叫它們.

例子6.7由6.3改變getcount為靜態方法而來. static關鍵字不能阻止乙個例項用->運算子來呼叫getcount,但php將不在方法內部建立this變數.如果你使用this->來呼叫,將會出錯.

例指第四節--建構函式和析構函式中的例子(參看前文),通過兩個例子的比較,你可以很好掌握

//static方法與普通方法之間的區別.

你可以寫乙個方法通過判斷this是否建立來顯示是否它被靜態地或者非靜態地呼叫. 當然,如果你用了static 關鍵字,不管它怎樣被呼叫,這個方法總是靜態的.

你的類也可以定義常量屬性,不需要使用public static,只需要用const關鍵字即可. 常量屬性總是靜態的.它們是類的屬性,而不是例項化該類的物件的屬性.

listing 6.7 static members

");

//輸出類的版本屬性

print("version used: " . counter::version . "

");

?>

類靜態成員和類靜態成員函式

當將類的某個資料成員宣告為static時,該靜態資料成員只能被定義一次,而且要被同類的所有物件共享。各個物件都擁有類中每乙個普通資料成員的副本,但靜態資料成員只有乙個例項存在,與定義了多少類物件無關。靜態方法就是與該類相關的,是類的一種行為,而不是與該類的例項物件相關。靜態資料成員的用途之一是統計有...

類的靜態成員

類的靜態成員存在於任何物件之外,物件中不包含任何與靜態資料成員有關的資料。class account 對於account的每乙個物件豆漿包含owner和amount兩個資料成員,而對於靜態成員interestrate只有乙個,且被所有的物件共享。double r r account rate 2.使...

類的靜態成員

1,static靜態成員,靜態成員 變數 or 函式 可以是public or private,訪問許可權與普通 非static 成員一樣,受到限定符限制 2,靜態成員 變數 or 函式 不與任何物件繫結在一起,而是被所有物件共享 特別是靜態成員函式,它不包含this 指標引數 3.public靜態...