位置: 编程技术 - 正文

php面向对象全攻略 (五) 封装性(php面向对象是什么意思)

编辑:rootadmin
9.封装性 封装性是面向对象编程中的三大特性之一,封装性就是把对象的属性和服务结合成一个 独立的相同单位,并尽可能隐蔽对象的内部细节,包含两个含义:1.把对象的全部属性和全 部服务结合在一起,形成一个不可分割的独立单位(即对象)。2.信息隐蔽,即尽可能隐蔽对 象的内部细节,对外形成一个边界〔或者说形成一道屏障〕,只保留有限的对外接口使之与外 部发生联系。 封装的原则在软件上的反映是:要求使对象以外的部分不能随意存取对象的内部数据 (属性),从而有效的避免了外部错误对它的“交叉感染”,使软件错误能够局部化,大大减 少查错和排错的难度。 用个实例来说明吧,假如某个人的对象中有年龄和工资等属性,像这样个人隐私的属性 是不想让其它人随意就能获得到的,如果你不使用封装,那么别人想知道就能得到,但是如 果你封装上之后别人就没有办法获得封装的属性,除非你自己把它说出去,否则别人没有办 法得到 再比如说,个人电脑都有一个密码,不想让其它人随意的登陆,在你的电脑里面拷贝和 粘贴。还有就是像人这个对象,身高和年龄的属性,只能是自己来增长,不可以让别人随意 的赋值等等。 使用private 这个关键字来对属性和方法进行封装: 原来的成员: var $name; //声明人的姓名 var $sex; //声明人的性别 var $age; //声明人的年龄 function run(){… … .} 改成封装的形式: private $name; //把人的姓名使用private 关键字进行封装 private $sex; //把人的性别使用private 关键字进行封装 private $age; //把人的年龄使用private 关键字进行封装 private function run(){… … } //把人的走路方法使用private 关键字进行封装 注意:只要是成员属性前面有其它的关键字就要去掉原有的关键字“var”。 通过private 就可以把人的成员(成员属性和成员方法)封装上了。封装上的成员就不能 被类外面直接访问了,只有对象内部自己可以访问;下面的代码会产生错误: 代码片段 输出结果为: Fatal error: Cannot access private property Person::$name Fatal error: Cannot access private property Person::$sex Fatal error: Cannot access private property Person::$age Fatal error: Cannot access private property Person::$name Fatal error: Call to private method Person::run() from context '' 从上面的实例可以看到,私有的成员是不能被外部访问的,因为私有成员只能在本对象 内部自己访问,比如,$p1 这个对象自己想把他的私有属性说出去,在say()这个方法里面访 问了私有属性,这样是可以。(没有加任何访问控制,默认的是public 的,任何地方都可以访 问) 代码片段 因为成员方法say()是公有的,所以我们在类的外部调用say()方法是可以的,改变上面的 代码; 代码片段 输出结果为: 我的名字叫:张三性别:男我的年龄是: 我的名字叫:李四性别:女我的年龄是: 我的名字叫:王五性别:男我的年龄是: 因为构造方法是默认的公有方法(构造方法不要设置成私有的),所以在类的外面可以访 问到,这样就可以使用构造方法创建对象,另外构造方法也是类里面的函数,所以可以用构 造方法给私有的属性赋初值。Say()的方法是默认公有的, 所以在外面也可以访问的到,说 出他自己的私有属性。 从上面的例子中我们可以看到,私有的成员只能在类的内部使用,不能被类外部直接来 存取,但是在类的内部是有权限访问的,所以有时候我们需要在类的外面给私有属性赋值和 读取出来,也就是给类的外部提供一些可以存取的接口,上例中构造方法就是一种赋值的形 式,但是构造方法只是在创建对象的时候赋值,如果我们已经有一个存在的对象了,想对这 个存在的对象赋值,这个时候,如果你还使用构造方法传值的形式传值,那么就创建了一个 新的对象,并不是这个已存在的对象了。所以我们要对私有的属性做一些可以被外部存取的 接口,目的就是可以在对象存在的情况下,改变和存取属性的值,但要注意,只有需要让外 部改变的属性才这样做,不想让外面访问的属性是不做这样的接口的,这样就能达到封装的 目的,所有的功能都是对象自己来完成,给外面提供尽量少的操作。 如果给类外部提供接口,可以为私有属性在类外部提供设置方法和获取方法,来操作私 有属性.例如: 代码片段 上面的方法是为一个成员属性设置和获取值,当然你也可以为每个属性用同样的方法对 其进行赋值和取值的操作,完成在类外部的存取工作

推荐整理分享php面向对象全攻略 (五) 封装性(php面向对象是什么意思),希望有所帮助,仅作参考,欢迎阅读内容。

php面向对象全攻略 (五) 封装性(php面向对象是什么意思)

文章相关热门搜索词:php 面向对象,php 面向对象,php语言之面向对象编程 educoder,php面向对象的三大特征,php面向对象编程,php面向对象是什么意思,php面向对象编程,php面向对象是什么意思,内容如对您有帮助,希望把文章链接给更多的朋友!

php面向对象全攻略 (六)__set() __get() __isset() __unset()的用法 .__set()__get()__isset()__unset()四个方法的应用一般来说,总是把类的属性定义为private,这更符合现实的逻辑。但是,对属性的读取和赋值操作是非常频繁

php面向对象全攻略 (七) 继承性 .类的继承继承作为面向对象的三个重要特性的一个方面,在面向对象的领域有着极其重要的作用,好像没听说哪个面向对象的语言不支持继承。继承

php面向对象全攻略 (八)重载新的方法 .重载新的方法在学习PHP这种语言中你会发现,PHP中的方法是不能重载的,所谓的方法重载就是定义相同的方法名,通过参数的个数不同或参数的类型

标签: php面向对象是什么意思

本文链接地址:https://www.jiuchutong.com/biancheng/277130.html 转载请保留说明!

上一篇:php面向对象全攻略 (四)构造方法与析构方法(php面向对象优点,缺点)

下一篇:php面向对象全攻略 (六)__set() __get() __isset() __unset()的用法(php面向对象是什么意思)

  • 谈谈sqlserver自定义函数与存储过程的区别(sql自定义)

    加入一笔记录到表bankMoney,并查询此表中userID= Zhangsan的所有存款的总金额。

    在这里再??乱幌麓娲⒐?痰?种传回值(方便正在看这个例子的朋友不用再去查看语法内容):1.以Return传回整数2.以output格式传回参数3.Recordset

    传回值的区别:

    output和return都可在批次程式中用变量接收,而recordset则传回到执行批次的客户端中。实例3:使用带有复杂 SELECT 语句的简单过程  下面的存储过程从四个表的联接中返回所有作者(提供了姓名)、出版的书籍以及出版社。该存储过程不使用任何参数。

    实例4:使用带有参数的简单过程

    实例5:使用带有通配符参数的简单过程

    实例6:if...else存储过程,其中@case作为执行update的选择依据,用if...else实现执行时根据传入的参数执行不同的修改.

    深入分析SqlServer查询计划 对于SQLServer的优化来说,优化查询可能是很常见的事情。由于数据库的优化,本身也是一个涉及面比较的广的话题,因此本文只谈优化查询时如何看懂SQ

    sql 判断字符串中是否包含数字和字母的方法 判断是否含有字母selectPATINDEX('%[A-Za-z]%',‘ads')=0(如果存在字母,结果1)判断是否含有数字PATINDEX('%[0-9]%',‘sdf" class="img-responsive" alt="谈谈sqlserver自定义函数与存储过程的区别(sql自定义)">

    谈谈sqlserver自定义函数与存储过程的区别(sql自定义)

  • Win2000中DLL文件报错或丢失的解决方案(dll文件在哪儿)

    Win2000中DLL文件报错或丢失的解决方案(dll文件在哪儿)

  • win8如何打开安装ISO文件 利用虚拟光驱安装ISO文件图文教程(win8电脑如何进入安全模式启动)

    win8如何打开安装ISO文件 利用虚拟光驱安装ISO文件图文教程(win8电脑如何进入安全模式启动)

  • win7旗舰版怎么查看系统内存大小?(win7旗舰版怎么改成专业版)

    win7旗舰版怎么查看系统内存大小?(win7旗舰版怎么改成专业版)

  • Python虚拟环境项目实例(python虚拟环境管理)

    Python虚拟环境项目实例(python虚拟环境管理)

  • python不换行之end=与逗号的意思及用途(python如何不换行)

    python不换行之end=与逗号的意思及用途(python如何不换行)

  • js判断日期时间有效性的方法(js判断时间差)

    js判断日期时间有效性的方法(js判断时间差)

  • Android性能优化(四)——代码优化工具Lint(Android性能优化的方面12个)

    Android性能优化(四)——代码优化工具Lint(Android性能优化的方面12个)

  • jQuery 3.0十大新特性最终版发布(jquery3.3.1)

    jQuery 3.0十大新特性最终版发布(jquery3.3.1)

  • 动态市盈率与静态市盈率区别百度百科
  • 每月进项税额怎么算
  • 什么是电子银行渠道限额
  • 信息技术服务费入什么科目
  • 交车辆购置税可以刷信用卡吗
  • 事业单位需要写自传吗
  • 免税农产品收入是否计入30万销售额
  • 公积金账户收入
  • 地方教育附加费是什么意思
  • 房地产开发成本占比
  • 公司与个人合伙协议
  • 离职补偿金的税率
  • 纯粮食白酒广告语
  • 收上级补助款专用如何做账?
  • 出售固定资产增值税税率最新2022
  • mac qq音乐怎么下载mp3格式的音乐
  • win10蓝牙鼠标已连接不显示
  • 汇算清缴期业务包括哪些
  • 网速怎么限制10mb以内
  • le启动exe是什么意思
  • 企业所得税汇算交税分录
  • 解决打呼噜只需一杯水
  • php curl命令详解
  • 公司出租房屋怎样开发票的税务局率?
  • 办公室装修入账
  • 属于工业企业期间费用的是
  • 企业为员工缴纳社保标准及流程
  • 专项应付款费用化
  • 鲜艳的多彩的英文
  • php curl_multi_init
  • syms命令
  • 竣工结算与竣工决算的主要区别是什么
  • svc语法
  • gpt3 api
  • linux进程状态有哪些
  • ps怎么把图片套入样机快捷键
  • 织梦cms要钱吗
  • 稳岗补贴钱给谁
  • 交所得税怎么记账
  • 个体户需要交什么保险
  • python输入函数帮助
  • 织梦如何采集文章
  • 公司处置已使用4年多的汽车,怎么增值税申报
  • mongodb查询表数据
  • 银行电子承兑到期后怎么操作
  • 子公司和分公司的区别
  • 弥补亏损怎么做分录
  • 金蝶低值易耗品报废操作
  • 其他债权投资期末公允价值的变动应当计入
  • 对以前年度的收入怎么算
  • 计提本月工资的账务处理
  • 现金日记账和银行日记账必须逐月结出余额
  • 专票先不认证如何申报增值税
  • 商业汇票贴现必须具备的条件
  • 分公司内部管理模式
  • 处置固定资产的增值税怎么处理
  • 收到发票税点计入什么科目
  • 外埠存款怎么读
  • 设置会计账簿应当遵循的基本原则有
  • xp系统电脑蓝屏无法正常启动怎么恢复
  • win8系统出现蓝屏怎样处理
  • linux命令总结
  • realmon.exe - realmon是什么进程 有什么用
  • 苹果mac系统怎么安装pip工具
  • 苹果服务器操作系统
  • linux配置ip地址文件
  • linux执行sh文件显示不存在
  • 2020win7免费升级win10教程
  • ugui scrollview
  • node创建服务
  • nodejs bff
  • 源码分析怎么写
  • sql服务3417
  • 《噩梦》
  • 关于翡翠手镯知识
  • 广西电子发票如何申请
  • 地方税务局网上申报
  • 环保税怎么申报?看完你就明白了
  • 有限合伙企业怎么交税
  • 登录上海电子税务局显示获取公告失败
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设