php--oop筆記(一),php--oop筆記(
//物件導向的模型概念:在PHP5裡面它作為類(class),定義一個模型使用關鍵字class
/*
類的定義涉及以下幾點:
1.類的成員(屬性)【人的屬性:姓名,年齡】
2.類屬性(變數)的定義:使用關鍵字var
3.類的常量,永遠不會發生改變的屬性【人的常量:血統,性別】
4.如何訪問成員
a)類的執行個體化(new)
b)類指標的使用(符號:->)
c)訪問類的常量(常量指標符號 類名稱::常量名)
定義類的方法:使用關鍵字function
1)類的方法,代表一種行為【人的行為:吃,走,說】
2)類的方法如何訪問(符號:->)
3)行為是多樣的,定義行為的多樣可以使用參數function say(參數)
4)行為的返回值:
注意事項:在php5裡面有一個奇葩問題(odd problem)echo & echo ,這個奇葩問題首先有一個優先順序別,如果是類方法它會由於其他一切執行,如果是函數方法,它會低於類方法,但高於echo本身,解決這個問題最好的方式就是使用return關鍵字
成員屬性的存取權限:
1)公開的(關鍵字:public,var) ---- 最進階別的(可以被繼承,可以被隨便訪問)
2)私人的(關鍵字:private) --- 最低層級(不可以被繼承,不可以在外部存取)
3)受保護的(關鍵字:protected) ---中等層級(可以被繼承,不可以在外部存取)
方法的存取權限
1)公開的(關鍵字:public,這是預設的方式,可以省略不寫) ---- 最進階別的(可以被繼承,可以被隨便訪問)
2)私人的(關鍵字:private) --- 最低層級(不可以被繼承,不可以在外部存取)
3)受保護的(關鍵字:protected) ---中等層級(可以被繼承,不可以在外部存取)
靜態屬性(靜態變數):作用相同於類常量,可以改變(但也許很長時間都不改變,甚至永遠不改變),理解靜態為靜觀其變的態,專業術語:靜態變數術語類本身
比如:我是一個中國人,就算我娶了一個香港的妻子,我生出來的孩子,他的膚色是永遠不會改變。但膚色真的永遠不可以改變嗎?因為可以晒黑,還有一種可能,假設我的兒子將來娶了一個俄羅斯的女人,生出來的孫子就不可能是中國人的黃皮膚,頭髮有可能不是黑頭髮
聲明靜態關鍵字(static):
1)如何訪問靜態變數(類名稱::$變數名)
2)香港的dd面試題:類常量與靜態變數有何區別?
答案:(1)靜態變數是可以改變,靜態常量是不可以改變(2)文法規定常量是不可以在外部賦值的,常量在外部只能被訪問(3)常量在類和介面裡面定義的時候必須初始化
靜態方法:作用和面對的問題與靜態變數是一樣,只不過一個是變數一個是行為
1)如何訪問(類名稱::方法名())
xx面試題:靜態變數和靜態方法,類常量如何在類內部進行訪問?
答案:(1)訪問靜態變數可以使用(可以用類名::$變數名也可以用self::$變數名)
(2)訪問靜態方法可以使用(可以用類名::方法名也可以用self::方法名)
(3)訪問類常量可以使用(可以用類名::常量名也可以使用self::常量名)
(4)self只能用於內部訪問靜態變數或方法,常量,外部只能使用類名稱
xx面試:如何在外部存取內部聲明靜態屬性?
答案:定義一個公開的方法,方法內部訪問私人的變數
靜態變數和靜態方法的許可權
1)公開的(關鍵字:public,這是預設的方式,可以省略不寫) ---- 最進階別的(可以被繼承,可以被隨便訪問)
2)私人的(關鍵字:private) --- 最低層級(不可以被繼承,不可以在外部存取)
3)受保護的(關鍵字:protected) ---中等層級(可以被繼承,不可以在外部存取)
*/