⑴ php怎麼理解這些個關鍵字啊,public;private;protect;final;static;const;我感覺這
public: 公有屬性或方法
在子類中可以通過self::var 或self::method 來調用,可以通過parent::method來調用父類中的方法,但不能調用公有屬性.
在實例中可以通過$obj->var或self::method 來調用
protected: 受保護類型
在子類中可以通過self::var 或self::method調用,可以通過parent::method來調用父類中的方法
在實例中不能通過$obj->var 來調用 protected類型的方法或屬性
private: 私有類型
該類型的屬性或方法只能在該類中使用,在該類的實例、子類中、子類的實例中都不能調用私有類型的屬性和方法
再來說說final
1.final不能用來修飾成員屬性
2.final只能修飾類和方法
作用:被修飾的類不能被子類所繼承;被修飾的方法不能被子類的方法覆蓋。
然後來說說static
1.static用來修飾成員屬性和成員方法,但不能用來修飾類
2.用static修飾的成員屬性可以被同一個類的所有對象共享
3.靜態的數據是存在 內存中的 數據段中(初始化靜態段)
4.靜態的數據是在類在第一次載入時,分配到內存中的
5.什麼是類被載入?只要在程序中使用到這個類(有這個類名出現)
6.靜態的成員屬性都要用類名去訪問,不用創建對象,不用對象去訪問;在類里邊可以用self代表本類($this)
7.靜態方法,不能訪問非靜態的成員屬性(但是,在非靜態方法卻能訪問靜態的成員屬性),非靜態的成員屬性,必須用對象訪問,在內部訪問非靜態成員屬性,用$this.
8.如果你確定一個方法中不需使用到非靜態的成員屬性,則可以將這個方法聲明為靜態方法,不需實例化對象,就可以訪問
最後來說說const
1.它只能用來修飾成員屬性
2.在類中聲明常量必須使用const
3.訪問方式和訪問靜態成員屬性一樣(類外使用 類名::成員屬性,類里邊則使用self::成員屬性)
4.常量一定要在聲明的時候就給初始值
⑵ private 在PHP里到底有什麼用
private都是相對於類來說的,我接觸php的時候感覺挺簡單的直到碰到了類,各種繼承,各種調用,真的很煩。比如我要實現輸出helloword,如果用面向對象來寫就是定義一個hello類,然後輸出helloword,同時定義了一些屬性。某一天其他人看到了這個類,想要實現他的想法例如輸出hello,他需要繼承hello這個類,然後在子類中輸出hello,但是我自己的這個類某些方法或者屬性不想讓別人使用,這個時候就需要加上private,使我類里的一些屬性或者方法私有化,只能自己使用。
⑶ php類中必須聲明public或者是private嗎
不用必須聲明的,默認是public
public:許可權是最大的,可以內部調用,實例調用等。
protected: 受保護類型,用於本類和繼承類調用。
private: 私有類型,只有在本類中使用。
⑷ [php]private public protected 三者沒弄明白
public,公開的,是所有實例都可以訪問
protected,受保護的,只有存在繼承關系的可以訪問,比如子類,父類
private,私有的,只有對應的類內部能夠調用
⑸ php protected private什麼時候該用什麼
private 是完全私有的,只有當前類中的成員能訪問到. protected 是受保護的,只有當前類的成員與繼承該類的類才能訪問. 這兩個是訪問類中成員許可權的限制符.在類外如果想使用類中的成員,只能直接使用public類型的,protected和private都是不能訪問的
⑹ 說說php面向對象編程時static,public,private,protected 各有什麼意義
staticpublic與publicstatic是等價的,這兩者只是兩個修飾符的順序不同。根據oracle.com教材中第八章的描述,如果兩個或兩個以上的(不同的)欄位修飾符出現在欄位聲明,它們出現的順序需與FieldModifier一致,這只是習慣,但不是必需的。部分修飾符說明:public是訪問許可權修飾符,用於控制外界對類內部成員的訪問,聲明為public的對象成員是完全共有的,外界可以隨意訪問,除此之外還有private,protected和默認。static控制類成員變化的修飾符。static是靜態成員修飾符,其修飾的靜態變數脫離具體對象獨立存在,在內存中之後一份拷貝,所有的對象都公用這一個存儲空間,所以對static修飾的靜態變數進行的修改對該類的所有對象都起作用。static修飾的靜態函數代表所有對象的統一操作,只能調用靜態變數。static是針對面向對象中的「多態」而提出來的,static修飾的靜態成員不存在多態性。附:FieldModifier順序
⑺ php中聲明變數var與private、public、static的區別
var
是聲明一個變數/對象,public,
private,
是類/類的屬性/類的欄位的訪問修飾符,static是類/類的屬性/類的欄位的修飾符
⑻ PHP中private和public還有protected的區別
public:聲明方法和屬性可以被隨意訪問。
Protected:聲明的方法和屬性只能被類本身和其繼承子類訪問。
private:只能被定義屬性和方法的類訪問。
private 是完全私有的,只有當前類中的成員能訪問到.
protected 是受保護的,只有當前類的成員與繼承該類的類才能訪問.
protected的訪問權介於public和private之間,實際上三者的區別就是許可權問題,private和protected區別主要體現在其繼承類的訪問許可權上,這些你可以自己編寫一個程序,寫個類,編譯一下你就很清楚他們許可權的區別了。
私有成員private member
只能被成員函數和類的友元訪問
實行信息隱藏的類把其數據成員聲明為private
被保護成員protected member
對派生類derived class 就像public 成員一樣
對其他程序則表現得像private
⑼ PHP private繼承疑問
父類中的私有屬性只能當前類的對象或函數進行訪問和修改。比如你子類對象的$var直接$var->a=100是賦值不了父類$a的。但是父類中的構造方法和getNum函數是公有的,$var可以直接調用。所以:
1、$this->a指父類的私有屬性$a,你子類中調用了父類構造方法,父類構造方法再把它賦值為100;
2、getNum函數是公有的,getSonNum等價於getNum,該方法輸出了$a,son類確實沒有a這個屬性,getNum函數輸出的是父類的中的$a。
⑽ PHP的類的private變數調用問題
因為__get(); __set() 方法在類的內部,類的內部是可以調用類的私有屬性的變數