亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 語言 > PHP > 正文

php面向對象的封裝性說明

2024-09-04 11:43:39
字體:
來源:轉載
供稿:網友
  1. <?php 
  2. /* 
  3.  * 封裝性:面向對象三大特性之一 
  4.  * 
  5.  * 1.就是把對象的成員(屬性,方法)結合成一個獨立的相同單位,并盡可能隱藏對象的內部細節 
  6.  *   訪問權限修飾符  public protected private 
  7.  *   private:私有的,用這個關鍵字修飾的成員,只能在對象內部訪問(只有用$this訪問) 
  8.  *   
  9.  *  屬性可以封裝: 
  10.  *    只要一個變量,需要在多個方法使用,就將這個變量聲明為成員屬性,可以直接在這個對象中的所有方法中使用 
  11.  * 
  12.  *    成員屬性,相當于這個對象中的全局變量 
  13.  * 
  14.  *    成員屬性都會在方法中使用,成員屬性值的變化其實就是在改變方法的執行行為,也就是改變了對象的功能 
  15.  * 
  16.  *    成員屬性的值如果不正常,方法執行的功能葉就不正常  
  17.  *     
  18.  *    作用:不需要在對象外部改變或讀取它的值 
  19.  *     1.封裝 
  20.  *      再提供一個公有的方法(經過方法對對象成員屬性進行賦值和取值就可以控制) 
  21.  * 
  22.  * 
  23.  *  方法也可以封裝 
  24.  * 
  25.  *   作用: 
  26.  *    1.使用private修飾使其只能在內部使用 
  27.  * 
  28.  *    2.一個類中有100個方法,封裝了95個(為另外5個服務的方法),只有5個方法可以使用 
  29.  * 
  30.  *   100個成員屬性,都讓取值,不可以改值;或者只可改值,不可獲取值//此種情況下使用以下方法比較方便  
  31.  *   和封裝有關的魔術方法: 
  32.  * 
  33.  *  __set();//是直接設置[私有的]成員屬性值時,自動調用的方法 
  34.  *  __get();//是直接獲取[私有的]成員屬性值時,自動調用的方法 
  35.  *  __isset();//是直接使用isset()查看對象中私有屬性是否存在時,自動調用這個方法 
  36.  *  __unset();//是直接使用unset()刪除對象中私有屬性時,自動調用的方法 
  37.  * 
  38.  * 
  39.  * 
  40.  * 
  41.  * 
  42.  * 
  43.  * 
  44.  */ 
  45. class Person{ 
  46.  
  47.   //x封裝成員屬性,不需要在對象外部改變 
  48.   private $name
  49.   private $age
  50.   private $sex
  51.  
  52.  
  53.   private __unset($proName){ 
  54.    unset($this->$proName); 
  55.    
  56.   } 
  57.  
  58.  
  59.   //是直接查看對象中私有屬性是否存在時,自動調用這個方法 
  60.   //__isset($proName)的使用,$proName代表屬性名 
  61.   private function __isset($proName){ 
  62.    return isset($this->$proName);//isset()返回是否存在 
  63.   } 
  64.  
  65.   function __construct($name,$age,$sex){ 
  66.    $this->name=$name
  67.    $this->age=$age
  68.    $this->sex=$sex
  69.  
  70.   } 
  71.  
  72.    
  73.   //當獲取私有的成員屬性時,自動調用此方法 
  74.   private function __get($proName
  75.   { 
  76.    //控制所獲取的值 
  77.    if($proName=="age"){ 
  78.     if($this-age>40) 
  79.      return $this->age-10; 
  80.    } 
  81.    return $this->$proName
  82.   } 
  83.  
  84.   //當設置私有的成員屬性時,自動調用此方法 
  85.   private function __set($proName,$proValue){ 
  86.    //$proName表示成員屬性名,$proValue表示成員屬性值 
  87.    //控制設置范圍 
  88.    if($proName=="age"){ 
  89.     if($proValue > 100 || $proValue<0) 
  90.      return
  91.    } 
  92.    $this->$proName=$proValue
  93.  
  94.     
  95.   } 
  96.  
  97.   //提供公有方法來設置成員屬性的值 
  98.   function setAge($age){ 
  99.    //控制年齡范圍,增加安全性 
  100.    if($age > 100 || $age < 0 ) 
  101.     return
  102.    $this->age=$age
  103.   } 
  104.    
  105.   //提供公有方法來獲取成員屬性的值 
  106.   function getAge(){ 
  107.    //控制獲取年齡的范圍 
  108.    if($this->age < 30) 
  109.     return $this->age; 
  110.    else if($this->age<40) 
  111.     return $this->age-5; 
  112.    else if($this->age<50) 
  113.     return $this->age; 
  114.    else 
  115.     return $this->age-15; 
  116. 提供公有方法來  } 
  117.  
  118.   function say(){ 
  119.    echo "我的名字:{$this->name},我的年齡:{$this->age},我的姓別:{$this->sex}<br>"
  120.  
  121.    //訪問封裝過的 run()方法 
  122.    $this-run(); 
  123.   } 
  124.  
  125.   private function run(){ 
  126.    echo '111111111111<br>' 
  127.  
  128.   } 
  129.  
  130.   function eat(){ 
  131.  
  132.   } 
  133.  
  134.   //析構方法 
  135.   function __destruct(){ 
  136.  
  137.   } 
  138.  } 
  139.  
  140. $p1=new Person("zhangsan",25,"男"); 
  141. $p2=new Person; 
  142. $p3=new Person; 
  143. //$p1->age=-50;//因為年齡在外部隨意訪問,所以成員屬性藥封裝,才有安全性。 
  144. $p1->setAge(30);//通過方法來設置成員屬性德值 
  145. $p1->getAge();//通過方法來獲取成員屬性德值 
  146.  
  147. //通過添加家魔術方法__set($proName,$proValue) __get($proName),就可以直接調用成員屬性了 
  148.  
  149.  
  150. $p1->say();//可以調用 
  151. $p1->run();//私有的方法不能直接調用 
  152.  
  153. //刪除$p1里面的name 
  154. unset($p1->name); 
  155.  
  156. //判斷name是否存在 
  157. if(isset($p1->name)){ 
  158.  
  159.  echo "存在<br>"
  160. }else
  161.  echo "沒有這個成員 <br>"
  162.  
  163.  
  164. 來的成員: 
  165. var $name;                  //聲明人的姓名 
  166. var $sex;                            //聲明人的性別 
  167. var $age;                            //聲明人的年齡 
  168. function run(){…….} 
  169. 改成封裝的形式: 
  170. private $name;                            //把人的姓名使用private關鍵字進行封裝 
  171. private $sex;                                     //把人的性別使用private關鍵字進行封裝 
  172. private $age;                                     //把人的年齡使用private關鍵字進行封裝 
  173. private function run(){……}             //把人的走路方法使用private關鍵字進行封裝 
  174. 注意:只要是成員屬性前面有其它的關鍵字就要去掉原有的關鍵字“var”。 
  175. 通過private就可以把人的成員(成員屬性和成員方法)封裝上了。封裝上的成員就不能被類外面直接訪問了,只有對象內部自己可以訪問;下面的代碼會產生錯誤: 
  176. class Person 
  177. //下面是人的成員屬性 
  178. private $name//人的名子,被private封裝上了 
  179. private $sex//人的性別, 被private封裝上了 
  180. private $age//人的年齡, 被private封裝上了 
  181. //這個人可以說話的方法 
  182. function say() 
  183. echo "我的名子叫:".$this->name." 性別:".$this->sex." 我的年齡是:".$this->age."<br>"
  184. //這個人可以走路的方法, 被private封裝上了 
  185. private function run() 
  186. echo "這個人在走路"
  187. //實例化一個人的實例對象 
  188. $p1=new Person(); 
  189. //試圖去給私有的屬性賦值,結果會發生錯誤 
  190. $p1->name="張三"
  191. $p1->sex="男"
  192. $p1->age=20; 
  193. //試圖去打印私有的屬性,結果會發生錯誤 
  194. echo $p1->name.”<br>”; 
  195. echo $p1->sex.”<br>”; 
  196. echo $p1->age.”<br>” 
  197. //試圖去打印私有的成員方法,結果會發生錯誤 
  198. $p1->run(); 
  199. //輸出結果為: 
  200. //Fatal error: Cannot access private property Person::$name 
  201. //Fatal error: Cannot access private property Person::$sex 
  202. //Fatal error: Cannot access private property Person::$age 
  203. //Fatal error: Cannot access private property Person::$name 
  204. //Fatal error: Call to private method Person::run() from context '' 
  205. ?> 

從上面的實例可以看到,私有的成員是不能被外部訪問的,因為私有成員只能在本對象內部自己訪問,比如,$p1這個對象自己想把他的私有屬性說出去,在say()這個方法里面訪問了私有屬性,這樣是可以,(沒有加任何訪問控制,默認的是public的,任何地方都可以訪問).

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
欧美二区乱c黑人| 精品成人av一区| yellow中文字幕久久| 高潮白浆女日韩av免费看| 亚洲福利视频二区| 国产免费一区二区三区在线能观看| 国产精品va在线播放我和闺蜜| 日韩在线免费高清视频| 久久精品国产欧美激情| 亚洲国产天堂久久综合| 亚洲欧美第一页| 亚洲精品一区二区三区不| 精品国产视频在线| 亚洲精品美女久久| 国产亚洲精品久久| 亚洲一区亚洲二区| 色婷婷久久一区二区| 欧美特黄级在线| 蜜月aⅴ免费一区二区三区| 亚洲精品一区二区三区婷婷月| 精品国产区一区二区三区在线观看| 国产精品99久久久久久人| 激情av一区二区| 国产精品自在线| 国产a∨精品一区二区三区不卡| 亚洲日韩欧美视频一区| 亚洲爱爱爱爱爱| 粉嫩老牛aⅴ一区二区三区| 97国产精品人人爽人人做| 精品视频偷偷看在线观看| 日韩成人av在线播放| 538国产精品一区二区免费视频| 国产精品影院在线观看| 久久久久国产精品www| 成人伊人精品色xxxx视频| 亚洲激情自拍图| 亚洲亚裔videos黑人hd| 91精品国产高清久久久久久91| 久久最新资源网| 日韩动漫免费观看电视剧高清| 国产精品视频xxxx| 国产一区二区三区在线免费观看| 国产亚洲精品久久| 久久伊人色综合| 日韩成人在线观看| 欧美中文字幕视频| 一本色道久久88综合日韩精品| 伊人久久久久久久久久久久久| 国产精品电影久久久久电影网| 2019中文字幕在线观看| 一区二区三区四区视频| 一区二区在线视频| 日韩成人性视频| 欧美区在线播放| 国产成人精品久久亚洲高清不卡| 欧美丝袜第一区| 日本精品免费观看| 国产欧美精品一区二区三区-老狼| 欧美精品videos性欧美| 欧美日韩精品在线| 亚洲成人网在线观看| 国产欧美一区二区三区在线看| 国产精品一区二区久久久| 久久影视电视剧免费网站| 欧美性生交大片免网| 日韩在线观看免费| 亚洲国产一区二区三区在线观看| 精品久久久久人成| 久久久91精品国产一区不卡| 亚洲第一综合天堂另类专| 欧美成人在线免费| 丝袜亚洲另类欧美重口| www.精品av.com| 2020国产精品视频| 欧美日韩黄色大片| 国产日本欧美一区二区三区在线| 亚洲美腿欧美激情另类| 在线色欧美三级视频| 国产一区二区三区视频免费| 国产亚洲视频中文字幕视频| 粗暴蹂躏中文一区二区三区| 国产成人啪精品视频免费网| 日韩电影中文字幕在线| 欧美极品少妇全裸体| 欧美国产日本高清在线| 久久精品国产一区| 久久久久久亚洲精品中文字幕| 国产精品a久久久久久| 久久香蕉国产线看观看网| 亚洲国产成人久久综合一区| 欧美精品在线视频观看| 国产精品久久久久久超碰| 欧美日韩在线视频一区二区| 狠狠躁夜夜躁人人躁婷婷91| 国产一区二区三区丝袜| 欧美日韩中文字幕在线| 亚洲精品永久免费| 91欧美视频网站| 国产精品狠色婷| 性欧美办公室18xxxxhd| 日韩av最新在线观看| 国产精品久久色| 国产精品久久久久久搜索| 日韩最新中文字幕电影免费看| 日韩在线观看电影| 久久久亚洲国产| 日韩精品在线视频美女| 日本国产一区二区三区| 亚洲国产成人在线播放| 欧美午夜精品伦理| 欧美成人小视频| 欧美激情综合色综合啪啪五月| 亚洲精选中文字幕| 亚洲第一精品夜夜躁人人躁| 一本色道久久88综合日韩精品| 国内精品模特av私拍在线观看| 国产精品自产拍在线观看| 亚洲www永久成人夜色| 国产亚洲精品va在线观看| 国产精品久久久久久久久久ktv| 97av在线视频免费播放| 亚洲欧洲第一视频| 欧美精品一二区| 91精品国产99久久久久久| 亚洲人成网站免费播放| 国a精品视频大全| 久久精品色欧美aⅴ一区二区| 7m精品福利视频导航| 精品视频在线播放免| 永久555www成人免费| 国内精品中文字幕| 亚洲三级免费看| 国产97色在线|日韩| 欧美成人全部免费| 亚洲日韩中文字幕| 热99在线视频| 91精品国产综合久久久久久蜜臀| 精品国产电影一区| 国产欧美精品在线播放| 亚洲欧美一区二区三区在线| 97热在线精品视频在线观看| 国产精品爽爽爽爽爽爽在线观看| 欧美大胆在线视频| 久久免费视频这里只有精品| 日韩大片在线观看视频| 91国产精品电影| 中文字幕国产亚洲| 久久精品中文字幕| 色综合久久中文字幕综合网小说| 色综久久综合桃花网| 91久久久久久久久久久| 欧美综合激情网| 中国china体内裑精亚洲片| 日韩免费av在线| 日韩av免费在线播放| 日韩在线视频网站| 久久香蕉国产线看观看av| 国产精品久久久久久婷婷天堂| 国产精品一区av| 日韩av电影在线播放| 亚洲国产精品久久91精品| 热99精品只有里视频精品| 一二美女精品欧洲| 91色在线观看|