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