相信大家對php函式的幾個修飾詞應該不會陌生,
public、private、protected、static
經常出現在專案**中,但你真的了解他們嗎?
public:
公有成員函式,可被任何其它物件和類的成員函式呼叫。 當該成員函式必須被該函式所在的層次結構之外的其他物件和類在訪問時使用。
private:
私有成員函式,只可以被該類所在的其它成員函式呼叫,該類的子類不可以呼叫。 當該成員函式所提供的行為明確針對定義它的類時。私有成員函式常常是重新分配要素的結果。重新分配要素又叫「重組」,指類內其它成員函式封裝某乙個特定行為的做法。
protected:
被保護的成員函式可被它所在的類或該類的子類的任何成員函式呼叫。 當該成員函式提供的行為被它所在類的層次結構內部而非外部需要時使用。
上面的這幾個見得多,應該比較好理解。
static:
出現在類中,靜態成員函式
通常,我們建立類時會指出那個類的物件的外觀與行為。除非用new建立那個類的乙個物件,否則實際上並未得到任何東西。只有執行了new後,才會正式生成資料儲存空間,並可使用相應的方法。
但在兩種特殊的情形下,上述方法並不堪用。一種情形是只想用乙個儲存區域來儲存乙個特定的資料——無論要建立多少個物件,甚至根本不建立物件。另一種情形是我們需要乙個特殊的方法,它沒有與這個類的任何物件關聯。也就是說,即使沒有建立物件,也需要乙個能呼叫的方法。為滿足這兩方面的要求,可使用static(靜態)關鍵字。一旦將什麼東西設為static,資料或方法就不會同那個類的任何物件例項聯絡到一起。所以儘管從未建立那個類的乙個物件,仍能呼叫乙個static方法,或訪問一些static資料。而在這之前,對於非static資料和方法,我們必須建立乙個物件,並用那個物件訪問資料或方法。這是由於非static資料和方法必須知道它們操作的具體物件。當然,在正式使用前,由於static方法不需要建立任何物件,所以它們不可簡單地呼叫其他那些成員,同時不引用乙個已命名的物件,從而直接訪問非static成員或方法(因為非static成員和方法必須同乙個特定的物件關聯到一起)。
非出現在類中,全域性靜態函式
它與普通函式的區別:
當乙個程式段執行完畢時,靜態變數並沒有消失,它依然存在於記憶體中,下次在定義時還是以前的值,常用於遞迴或子函式中保留之前的值,可以用來定義變數和方法
用static修飾的函式,限定在本原始碼檔案中,不能被本原始碼檔案以外的**檔案呼叫。而普通的函式,預設是extern的,也就是說它可以被其它**檔案呼叫。
在函式的返回型別前加上關鍵字static,函式就被定義成為靜態函式。普通 函式的定義和宣告預設情況下是extern的,但靜態函式只是在宣告他的檔案當中可見,不能被其他檔案所用。因此定義靜態函式有以下好處:
(1) 其他檔案中可以定義相同名字的函式,不會發生衝突。
(2) 靜態函式不能被其他檔案所用。
ios修飾詞總結
ios總共有這些修飾詞 assign weak strong retain copy nonatomic atomic readonly readwrite assign arc mrc weak arc 物件 弱指標是針對物件的修飾詞 就是說它不能修飾基本資料型別 int float weak 修...
常用Java修飾詞
1.public 使用物件 類 介面 成員 介紹 無論它所處在的包定義在哪,該類 介面 成員 都是可訪問的 2.private 使用物件 成員 介紹 成員只可以在定義它的類中被訪問 3.static 使用物件 類 方法 字段 初始化函式 介紹 成名為static的內部類是乙個頂級類,它和包含類的成員...
關於修飾詞const
1.const修飾的唯讀變數必須在定義的同時初始化 因為如果沒有被賦初值,那麼變數被編譯器分配了乙個空間,並且賦給預設的乙個值,一般是很大的乙個負數,當我們再次給這個const變數賦值的時候就會出現錯誤,這個變數是唯讀的,一旦被賦值了就不能再改變了。2.case後面不可以是const修飾的唯讀變數,...