本文目錄一覽:
- 1、3、 一個類的公共成員與私有成員有何區別
- 2、php,子類無法訪問父類私有屬性,子類實例化再賦值後,子類所添加的新成員屬性不存在
- 3、PHP中private和public還有protected的區別
- 4、在PHP中,如何在類外部操作私有成員?
3、 一個類的公共成員與私有成員有何區別
公共成員與私有成員有何區別:
一、public(公共成員)
public,顧名思義,就是公開的數據信息,可以在程序中的任何位置(類內,類外),被其他類的對象調用,子類可以繼承和使用父類中的公共成員。
二、private(私有成員)
被private關鍵字修飾的變量和方法,只能在所屬類的內部被調用和修改,不可以在類外被訪問,在子類中也不可以被訪問。
相關概念:
PHP語法學習了C語言,吸納Java和Perl多個語言的特色發展出自己的特色語法,並根據它們的長項持續改進提升自己,例如java的面向對象編程。
該語言當初創建的主要目標是讓開發人員快速編寫出優質的web網站。PHP同時支持面向對象和面向過程的開發,使用上非常靈活。
經過二十多年的發展,隨着php-cli相關組件的快速發展和完善,PHP已經可以應用在 TCP/UDP服務、高性能Web、WebSocket服務、物聯網、實時通訊、遊戲、微服務等非 Web 領域的系統研發。
以上內容參考:百度百科-php
php,子類無法訪問父類私有屬性,子類實例化再賦值後,子類所添加的新成員屬性不存在
我把涉及到這個問題的知識點,可以和大家分享一下:
1.父類humanBeing , 子類student , 實例對象 $m (注意:$m是子類student 的實例,和humanBeijing沒有直接關係)
2.private 的屬性.僅在本類里使用;任何子類、實例對象都無法訪問,更別說賦值。這個在書本上都一直是這麼說滴。。哈哈。。。
根據以上知識點,來看你這個問題:
$student1=new student;
/*實例一個student的對象,此時注意,這個對象並不會繼承父類humanBeing的三個 private變量$name,$age,$gender*/
$student1-name=’zhangsan’;
$student1-age=20;
$student1-gender=’male’;
/*這裡需要注意.很多人會誤以為是給父類humanBeing的三個屬性賦值了,這是錯的。這裡的賦值,僅僅是給子類student的三個屬性賦值,這裡也許會有人問,子類student那有什麼屬性呀?在php中,所有的變量,不要求申明,在類中屬性也是一樣的,不要求申明,而且類中,默認都是public。所以上面的這三行代碼,僅僅是子類student的三個屬性賦值,和父類humanBeing的三個屬性,沒有任何關係,僅僅名字一樣而已*/
function say(){
echo “My name is {$this-name} and I am {$this-age} years old. I am {$this-gender}.br /”;
}
/*這個是父類humanBeing的公有方法,(默認的是public的),這個方法中 $this – name.這裡的$this 是指父類student,$this – name是指父類student的屬性,從始至終,它並沒有被賦值,所以它是空的,(而且它也不能被賦值,因為是private),這裡的$student1-name=’zhangsan’;賦值操作,僅僅是修改子類student的$name */
我想這麼回答,你應該非常清楚了吧
再來理解後面的例子,就很容易了。
$m-name=”zhangsan”;
/*僅僅是給子類Man的屬性賦值,而且因為可以省略聲明,默認又是public的,所以能直接賦值,當然也可以輸出了*/
class Person{
private $name;
}
/*可以直接把private $name;去掉,因為後面的賦值,跟它沒有任何關係,直接修改成*/
class Person{
}
PHP中private和public還有protected的區別
1、private修飾詞,表示成員是私有的,只有自身可以訪問; 2、protected,表示受保護權限,體現在繼承,即子類可以訪問父類受保護成員,同時相同包內的其他類也可以訪問protected成員。
在PHP中,如何在類外部操作私有成員?
若想在類外部操作類的私有成員,請在類內部使用__get()和__set()兩個方法:
class model{
function __set($name,$value){
$this-$name=$value;
}
function __get($name){
return $this-$name;
}
}
echo $aa-name;
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/292724.html