摘要:一封裝的特性對(duì)象的屬性或方法加上修飾符盡可能隱藏內(nèi)部細(xì)節(jié)訪問(wèn)控制特性修飾符種類二修飾符私有性封裝,外部不能調(diào)用,內(nèi)部其他成員可以,用于為其他方法鋪路的方法,不露出接口。
一、封裝的特性
1.對(duì)象的屬性或方法加上修飾符 2.盡可能隱藏內(nèi)部細(xì)節(jié) 3.訪問(wèn)控制 4.PHP5特性 5.修飾符種類:public/private/protected/var
二、修飾符
1.private: a.私有性封裝,外部不能調(diào)用,內(nèi)部其他成員可以,用于為其他方法鋪路的方法,不露出接口。 b.構(gòu)造、析構(gòu)方法一般不封裝。 c.屬性私有化是最常見(jiàn)的,私有化后,可用相應(yīng)的方法將改變屬性的行為暴露出來(lái),并限制在可控范圍內(nèi)
class Person { private $name="wo"; function setName($str){ if($str==="ni") $this->name=$str; } function getName(){ echo $this->name; } };
三、魔術(shù)方法
新版本不能對(duì)魔術(shù)方法進(jìn)行私有封裝,魔術(shù)方法對(duì)private/protected屬性有效 1.__get($pro); 直接訪問(wèn)私有屬性時(shí)自動(dòng)調(diào)用,屬性名傳給$pro,如下:
class Person { private $name="wo"; private $age=11; private $sex="nan"; function __get($pro){ return $pro; } }; $p1=new Person(); echo $p1->name; echo $p1->age; echo $p1->sex; //都是############
class Person { private $name="wo"; private $age=11; private $sex="nan"; function __get($pro){ return $this->$pro; } }; $p1=new Person(); echo $p1->name; echo $p1->age; echo $p1->sex; //wo11nan
2.__set($name,$value); 直接設(shè)置私有屬性時(shí)自動(dòng)調(diào)用,賦予屬性名$name為$value值,如下:
class Person { private $name="wo"; private $age=11; private $sex="nan"; function __get($pro){ return $this->$pro; } function __set($pro,$value){ //限制外部修改條件 if($pro==="name"){ if($value==="nii"){ $this->$pro=$value; } }else{ return false; } } }; $p1=new Person(); $p1->name="nii"; echo $p1->name; //nii
3.__isset($name); 類內(nèi)部添加__isset()方法時(shí),私有屬性不能用isset判斷,添加后,外部使用isset如遇私有屬性,自動(dòng)調(diào)用對(duì)象內(nèi)的__isset();,參數(shù)是屬性名,如下:
class Person { private $name="wo"; private $age=11; private $sex="nan"; function __get($pro){ return $this->$pro; } function __set($pro,$value){ if($pro==="name"){ if($value==="nii"){ $this->$pro=$value; } }else{ return false; } } function __isset($pro){ return $pro; } }; $p1=new Person(); if(isset($p1->name)){ echo "屬性存在"; }else{ echo "屬性不存在"; } //屬性存在
4.__unset(); 同上
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://specialneedsforspecialkids.com/yun/25555.html
摘要:面向?qū)ο笈c面向過(guò)程的區(qū)別要知道,二者并不是非此即彼,而是相輔相成的。而面向過(guò)程,則在微觀上對(duì)對(duì)象內(nèi)部進(jìn)行具體的實(shí)現(xiàn)。面向?qū)ο蟮娜筇匦哉f(shuō)到面向?qū)ο?,就不得不說(shuō)其三大特性封裝繼承和多態(tài)。封裝封裝是面向?qū)ο笞罨A(chǔ)的特性。 作者:伯特出處:github.com/ruicbAndroid/LoulanPlan聲明:本文出自伯特的《LoulanPlan》,轉(zhuǎn)載務(wù)必注明作者及出處。 剛學(xué)習(xí) Jav...
摘要:摘要本文章關(guān)注點(diǎn)是理解面向?qū)ο蟾拍?,從抽象的角度上去理解?duì)象,重點(diǎn)包括理解對(duì)象的作用,以及理解面向?qū)ο蟮娜筇卣鞣庋b,繼承,多態(tài)。特性多態(tài)不同對(duì)象以自己的方式響應(yīng)相同的消息的能力叫做多態(tài)。 摘要:本文章關(guān)注點(diǎn)是理解面向?qū)ο蟾拍睿瑥某橄蟮慕嵌壬先ダ斫鈱?duì)象,重點(diǎn)包括理解對(duì)象的作用,以及理解面向?qū)ο蟮娜筇卣鳎ǚ庋b,繼承,多態(tài))。本文重點(diǎn)關(guān)注的是理解概念。 在理解面向?qū)ο笾?,首先回答幾個(gè)問(wèn)...
摘要:?jiǎn)我宦氊?zé)原則可以看做是低耦合高內(nèi)聚在面向?qū)ο笤瓌t上的引申,將職責(zé)定義為引起變化的原因,以提高內(nèi)聚性來(lái)減少引起變化的原因。抽象的穩(wěn)定性決定了系統(tǒng)的穩(wěn)定性,因?yàn)槌橄笫遣蛔兊模蕾囉诔橄笫敲嫦驅(qū)ο笤O(shè)計(jì)的精髓,也是依賴倒置原則的核心。 Java-面向?qū)ο?什么是面過(guò)程 把題分解成一個(gè)一個(gè)步驟,每個(gè)步驟用函數(shù)實(shí)現(xiàn),依次調(diào)用即可。就是說(shuō),在進(jìn)行面向過(guò)程 編程的時(shí)候,不需要考慮那么多,上來(lái)先定義一個(gè)...
摘要:反對(duì)者在某些領(lǐng)域?qū)Υ擞枰苑裾J(rèn)。下面再引用一段來(lái)自維基百科中關(guān)于的歷史。類的更嚴(yán)格的定義是由某種特定的元數(shù)據(jù)所組成的內(nèi)聚的包。類還可以有運(yùn)行時(shí)表示形式元對(duì)象,它為操作與類相關(guān)的元數(shù)據(jù)提供了運(yùn)行時(shí)支持。 在開(kāi)始部分,請(qǐng)看官非常非常耐心地閱讀下面幾個(gè)枯燥的術(shù)語(yǔ)解釋,本來(lái)這不符合本教程的風(fēng)格,但是,請(qǐng)看官諒解,因?yàn)榱形粚?lái)一定要閱讀枯燥的東西的。這些枯燥的屬于解釋,均來(lái)自維基百科。 1、問(wèn)題...
摘要:很多情況下,通常一個(gè)人類,即創(chuàng)建了一個(gè)具體的對(duì)象。對(duì)象就是數(shù)據(jù),對(duì)象本身不包含方法。類是相似對(duì)象的描述,稱為類的定義,是該類對(duì)象的藍(lán)圖或原型。在中,對(duì)象通過(guò)對(duì)類的實(shí)體化形成的對(duì)象。一類的對(duì)象抽取出來(lái)。注意中,對(duì)象一定是通過(guò)類的實(shí)例化來(lái)的。 showImg(https://segmentfault.com/img/bVTJ3H?w=900&h=385); 馬上就要到七夕了,離年底老媽老爸...
閱讀 1049·2021-11-18 10:02
閱讀 1304·2021-09-23 11:22
閱讀 2607·2021-08-21 14:08
閱讀 1636·2019-08-30 15:55
閱讀 1720·2019-08-30 13:45
閱讀 3141·2019-08-29 16:52
閱讀 3091·2019-08-29 12:18
閱讀 1636·2019-08-26 13:36