对于面向对象

  修饰符的使用是我们最常用,也是很容易忽略的小细节。

  对于编程来说,把握好每一个小细节,就能构造出漂亮,优雅的程序。

public

  使用最多的修饰符,公共方法,允许所有访问,就像一个公交车一样,上来交钱[参数],有钱就行,无所谓是谁。

  对于这个修饰符救不在做更多的解释了,因为他的使用实在是太多了。

  PS:如果一个方法没有定义修饰符,那么在PHP5中,默认是public。

private

  私有方法, 不允许在直接实例化后访问,子类也不能直接访问,只允许在自己的类中使用。

  

   道理我都懂,我就想问一下,我什么时候应该用这个修饰符?都用Public不好么?反正其他人也能看到

    1:什么时候该用这个修饰符,这里我找到了一个比较好理解的比喻,我挺喜欢这种比喻方法的。

      拿一个工厂举例子,你作为一工厂老板,你的专利技术,自然不想被别人看到,以免被伪造的可能。所以你用private修饰。保护自己。然后就是public,一些无关紧要,或者可以让别人仿造或者大众化的技术或产品,其它人都可以从你这里得到。

      总的来说,就是不希望暴露在外的方法都使用私有或者受保护的方法来执行。这也就诠释了面向对象中的封装。

    2:都用Public不好么?反正其他人也能看到

      这里也找到了一个回答,规范还是很重要的。

      如果自己开发个系统自己玩,那没啥问题。但是,如果想提高技术,那么必然涉及到团队协作,或者你的系统开源给其他人使用。

      再比如,你自己开发的系统,过几个月后,你其实也也记不得当初写的啥,当你要修改代码的时候,你还需要去小心的查看这个方法能不能先调用,当设置了权限过后,我就知道,这个肯定是内部调用的,外部就不要调了。

      还有个,如果一个类是实现一个很复杂的功能,那那个方法可能有几十个,一眼看下去,晃眼,很难分清楚他们权限。

    3:上述部分回答摘自

      https://segmentfault.com/q/1010000008329419

protected

  受保护方法, 不允许在直接实例化后访问,子类可以访问,可以在类中使用。

    它的使用挺像private,不同的是他可以继承.

    还是拿工厂举例子,你的专利之前是设置成了private,但是随着你的厂子慢慢变大,有了分厂,你的专利不给分厂用?不可能吧。所以protected就是解决这个问题的。

  

  对于这三种使用,在之后的学习中,如果感觉到有新东西,随时补充。

2018/03/10 每日一学PHP 之 修饰符 public/private/protected的更多相关文章

  1. 2018/03/10 每日一个Linux命令 之 find

    每日一个Linux命令 2018-03-10 Linux 命令 find find [查找目录] [定义条件]   今天很累了,本来不想写了,但想到自己订的学习计划必须坚持下去,每天完成.   fin ...

  2. 2018/03/10 每日一个Linux命令 之 cksum

    每日一个Linux命令 2018-03-10 Linux 命令 cksum cksum [文件]  今天楼下的一个大妈去世了,不仅感叹,现如今,真的和以前不一样了,楼上楼下都不知道住的是谁? cksu ...

  3. 2018/03/09 每日一学PHP 之 require_once require include include_once 包含文件的区别

    require_once require include include_once 方法的区别 对于包含文件来说,如果只是使用框架来说的话,应该会很少碰到,因为框架底层对于文件的引用等做了很好的封装, ...

  4. 2018/03/08 每日一学PHP 之 常量defind 和 const区别

    常量defind 和 const区别 什么是常量? 如字面理解的,在脚本执行期间不可改变的的量. 定义一个常量应该注意的事项? 1:常量默认大小写敏感,错误的大小写不会被识别为常量. 2:常量只能是标 ...

  5. 2018/03/27 每日一个Linux命令 之 cron

    Cron 用于配置定时任务. -- 环境为 Ubuntu16-04 -- 先说说怎么配置一个简单的定时任务.直观的可以看到效果. 之前在网上查找资料,对Shell编程不熟悉的实在是很头疼,走了不少弯路 ...

  6. 2018/03/31 每日一个Linux命令 之 date

    date 命令主要用于查看和修改时间和时区 -- 这里主要学习基本的查看和设置时间和时区的方法. 直接显示日期 date '+%D' 效果 vagrant@hong:~$ date '+%D' 03/ ...

  7. 2018/03/11 每日一个Linux命令 之 top

    每日一个Linux命令 之 top   今天在公司测试服务器上跑了一个我写的功能[本地测试过的],但是不知道怎么跑了个无限死循环出来,一个文件的体积在不停的变大,如果不管的话这能行? 上去一看,PHP ...

  8. 2018/03/08 每日一个Linux命令 之 chattr/lsattr

    每日一个Linux命令 2018-03-08 Linux 命令 chattr/lsattr chattr [-参数] [+/-属性] [文件或者目录] 经过今天没有对铃,粥熬糊了,我就知道...... ...

  9. 2018/03/07 每日一个Linux命令 之 cat

    每日一个Linux命令 2018-03-07 Linux 命令 cat cat [-参数] fileName 在之前的Linux使用中 cat 命令一直作为文本输出指令来使用,很少可以深入学习的该命令 ...

随机推荐

  1. Vim 的 Python 编辑器详细配置过程 (Based on Ubuntu 12.04 LTS)

    为什么要用vim编辑py文件? 因为在Linux命令行中,缺少图形界面的IDE,vim是最佳的文本编辑器,而为了更好的编辑py文本,所以配置vim. 1. 安装完整版vim vi和vim的区别? 在L ...

  2. css !important用法以及CSS样式使用优先级判断

    之前一直看到很多css中都有!important这个样式,一直不知道有什么作用的,今天在网上详细了解了一下,看了别人的博客,顺便转载收藏一下 css !important用法CSS样式使用优先级判断 ...

  3. Unicode编码转换汉字

    Uri.UnescapeDataString(string) #region Unicode转换汉字 Console.WriteLine(Uri.UnescapeDataString("\u ...

  4. 怎样更改SQL Server 2008的身份验证方式

    大家都知道sql server 有两种登录验证方式,即sql server验证方式和windows验证方式,但是sql server默认的是windows登录验证方式,我们如何启用sql server ...

  5. iPhone 上如何通过 Safari 使用 Pocket

     在开始之前,请确认你的机器上已经安装了 Pocket  应用软件. 如何安装 1.打开Pocket应用,点击左上角的菜单(三条横岗),找到最下面的 Help ,点击 How To Save ,找到 ...

  6. 零基础读懂视频播放器控制原理——ffplay播放器源代码分析

    版权声明:本文由张坤原创文章,转载请注明出处: 文章原文链接:https://www.qcloud.com/community/article/535574001486630869 来源:腾云阁 ht ...

  7. sendfile Linux函数

    现在流行的 web 服务器里面都提供sendfile 选项用来提高服务器性能,那到底 sendfile 是什么,怎么影响性能的呢? sendfile 实际上是 Linux 2.0+ 以后的推出的一个系 ...

  8. 题目1446:Head of a Gang(并查集操作)

    题目链接:http://ac.jobdu.com/problem.php?pid=1446 详解链接:https://github.com/zpfbuaa/JobduInCPlusPlus 参考代码: ...

  9. This dependency was not found: * !!vue-style-loader!css-loader?……解决方案

    1.新建一个vue项目时,需要重新安装stylus 报错 This dependency was not found: * !!vue-style-loader!css-loader?{"m ...

  10. python编码问题总结

    最近利用python抓取一些网上的数据,遇到了编码的问题.非常头痛,总结一下用到的解决方案. linux中vim下查看文件编码的命令 set fileencoding python中一个强力的编码检测 ...