对于面向对象

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

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

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. Oracle查询锁表和解锁

    1.查询是否锁表 SELECT l.session_id sid, s.serial#, l.locked_mode,l.oracle_username, l.os_user_name,s.machi ...

  2. Linux命令之乐--sed

    sed是stream edit的缩写,是处理文本非常重要的工具. 常见用法: 1. 替换文本 1.1 替换文本中的第一处符合的样式 sed 's/pattern/replace_string' fil ...

  3. 在 Linux 使用 GCC 编译C语言共享库

    对任何程序员来说库都是必不可少的.所谓的库是指已经编译好的供你使用的代码.它们常常提供一些通用功能,例如链表和二叉树可以用来保存任何数据,或者是一个特定的功能例如一个数据库服务器的接口,就像MySQL ...

  4. iOS - 实现语言本地化/国际化

      实现iOS语言本地化/国际化(图文详解) 前言 语言本地化,又叫做语言国际化.是指根据用户操作系统的语言设置,自动将应用程序的语言设置为和用户操作系统语言一致的语言.往往一些应用程序需要提供给多个 ...

  5. openldap slapd.conf参数

    已安装系统的 /etc/openldap/slapd.conf 中包含 LDAP 服务器的完整配置文件.在此简述了其中的各个项并说明了必要的调整.以符号 (#) 为前缀的项处于非活动状态.必须取消这个 ...

  6. JS插件---->SyntaxHighlighter的使用

    SyntaxHighlighter是一款用于web页面的代码着色工具,可以用来着色多种语言.今天我们通过实例来学习一下它的用法.旧同桌不是老情人,但与你分享过的青春不比初恋少半分. SyntaxHig ...

  7. JavaScript 正则表达式 通俗解释 快速记忆

    1.正则表达式中最重要的三个符号: 1.1 B 在正则表达式中B有3种类型的括号: 1.1.1 方括号 “[“. 方括号"["内是需要匹配的字符.中括号括住的内容只匹配一个单一的字 ...

  8. Entity Framework6测试使用

    Entity Framework6安装完成后测试下 上一篇中完成了对Entity Framework6的下载安装,一下做一个简单的数据添加测试 1.创建一个简单的控制台测试项目 2.创建实体数据模型 ...

  9. 第三步 Cordova 3.0(及以上版本) 添加插件

    1.使用命令生成项目 例:cordova create jy110 com.example.jy110 jy110 2.使用命令添加插件(如果报错,可能是网络问题,可以多试几次,直到成功) 例:cor ...

  10. [Sdoi2016]齿轮

    4602: [Sdoi2016]齿轮 Time Limit: 10 Sec  Memory Limit: 512 MB Submit: 613  Solved: 324 [Submit][Status ...