static和const關鍵字的使用

2021-07-13 06:21:30 字數 1588 閱讀 1229

<?php

header("content-type:text/html;charset='utf-8'");

/*static和const關鍵字的使用

static成員能夠限制外部的訪問,因為static的成員是屬於類的,是不屬於任何物件例項,(因為靜態成員是在類

第一次載入的時候就建立的,所以在類的外部不需要物件而使用類名就可以訪問的到靜態的成員;

靜態的成員我們在做專案的時候目的就是使用類名去訪問。)

是在類第一次被載入的時候分配的空間,其他類是無法訪問的,只對類的例項共享,能一定程度對類該成員形成保護;

記憶體從邏輯上被分為四段,其中物件是放在「堆記憶體」裡面,物件的引用被放到了「棧記憶體「裡,

而靜態成員則放到了「初始化靜態段」,在類第一次被載入的時候放入的,可以讓堆記憶體裡面的每個物件所共享

類裡面的靜態方法只能訪問類的靜態的屬性,在類裡面的靜態方法是不能訪問類的非靜態成員的,原因很簡單,

我們要想在本類的方法中訪問本類的其它成員,我們需要使用$this這個引用,而$this這個引用指標是代表呼叫

此方法的物件,我們說了靜態的方法是不用物件呼叫的,而是使用類名來訪問,所以根本就沒有物件存在,

也就沒有$this這個引用了,沒有了$this這個引用就不能訪問類裡面的非靜態成員,又因為類裡面的靜態成員是可以

不用物件來訪問的,所以類裡面的靜態方法只能訪問類的靜態的屬性,即然$this不存在,在靜態方法中訪其它靜態成員

我們使用的是乙個特殊的類」self」; self和$this相似,只不過self是代表這個靜態方法所在的類。所以在靜態方法裡,

可以使用這個方法所在的類的「類名「,也可以使用「self「來訪問其它靜態成員,如果沒有特殊情況的話,我們通常使用後者,

即」self::成員屬性」的方式。

*/class person

}//訪問靜態方法

person::say();

//我是中國

//fatal error: access to undeclared static property: person::$school in f:\phpstudy\www\obj\obj6.php on line 41

/*在非靜態方法裡可不可以訪問靜態成員呢,是可以的,但是也不能使用」$this」引用也要使用類名

或是」self::成員屬性的形式」。*/

class person

}//訪問靜態方法

person::say();

//我是中國

/*

const是乙個定義常量的關鍵字,其訪問方式和靜態成員類似,都是使用」類名」,在方法裡面使用」self」關鍵字訪問,

但在php 5.3.0之後也可以使用物件來訪問。

*/class myclass

}echo myclass::constant."

" ; //使用類名來訪問,也不加」$」

$class = new myclass();

$class->showconstant();

echo $class::constant;

關鍵字static和const

static在c語言中的作用 static修飾區域性變數,改變區域性變數的生命週期,但是不改變其作用域,生命週期直到檔案銷毀。static修飾全域性變數,改變全域性變數的連線屬性,只能在本檔案中被使用,使用extern外部宣告也不行。static在c 的作用 宣告為static的類成員,成為類的靜態...

static關鍵字和const關鍵字的作用

static關鍵字至少有下列n個作用 1 函式體內static變數的作用範圍為該函式體,不同於auto變數,該變數的記憶體只被分配一次,因此其值在下次呼叫時仍維持上次的值 2 在模組內的static全域性變數可以被模組內所用函式訪問,但不能被模組外其它函式訪問 3 在模組內的static函式只可被這...

C C 關鍵字 static 和 const

參考 1.靜態全域性變數和函式 靜態全域性變數 static a 靜態函式 static void myfunc 2.靜態區域性變數 靜態區域性變數 每次呼叫該函式a都會加1,不會被重新初始化為0。void myfunc 3.靜態類成員變數和函式 類 class myclass 定義並初始化靜態成員...