2018/03/10 每日一学PHP 之 修饰符 public/private/protected

对于面向对象

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

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

public

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

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

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

private

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

  

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

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

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

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

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

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

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

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

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

    3:上述部分回答摘自

      https://segmentfault.com/q/1010000008329419

protected

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

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

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

  

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

原文地址:https://www.cnblogs.com/25-lH/p/8542218.html

时间: 2024-08-04 22:06:14

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

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

每日一个Linux命令 2018-03-10 Linux 命令 cksum cksum [文件]  今天楼下的一个大妈去世了,不仅感叹,现如今,真的和以前不一样了,楼上楼下都不知道住的是谁? cksum命令用于检查文件的CRC是否正确.确保文件从一个系统传输到另一个系统的过程中不被损坏. CRC是一种排错检查方式,该校验法的标准由CCITT所指定,至少可检测到99.998%的已知错误. 说明已经很清楚了,这个命令的作用也就是检查文件的相同性,在于MD5和HASH的选择上,使用哪种方法,到时候就看

2018/2/10 每日一学 差分约束算法

差分约束算法 我们知道,对于一个最短路问题中的某边<u,v>,必定有d[v]<=d[u]+w,稍稍变形可得d[v]-d[u]<=w,是不是很像x1-x2<=a这种数学不等式? 所以对于一不等式组,我们可以将其转化为x1-x2<=a形式,连接一条有向边(X2->X1),权值为a,然后求最短路就行了. 注意如果对于负环的判断以及图的连通判断-- 刷点题再看看吧. 原文地址:https://www.cnblogs.com/Alex-leaves/p/8439751.ht

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

什么是常量? 如字面理解的,在脚本执行期间不可改变的的量. 定义一个常量应该注意的事项? 1:常量默认大小写敏感,错误的大小写不会被识别为常量. 2:常量只能是标量数据,也可以定义 资源 常量,但是定义了,会发生一些奇妙的,不可预知的错误,所以应当尽量避免. 标量数据:(boolean,integer,float 和 string) 通过 defind 和 const 区别 1:重复定义 1:defind 重复定义常量,常量不会被修改,php报一个 通知 错误: 报错: 结论: 虽不影响程序运行

2018/03/09 每日一个Linux命令 之 chgrp/chown

每日一个Linux命令 2018-03-09 Linux 命令 chgrp/chown chgrp [-参数] [文件或者目录] chown [-参数] [文件所有者]:[文件所属群组] [文件或者目录] 世界是变化的,果然是正常的,今天有个同事离职了,在互联网行业,这也正常. 拥抱新变化. 正题: Linux有组的概念. 如果把组比作一个家的话,那么里面的文件就像你的私房钱,你可以花. 在这个家里的你老婆,也可以花,虽然比喻很粗糙,但是说明了组在管理文件中的作用. 为什么要设置组的概念呢? 还

2018/2/11 每日一学 无向图割顶和桥

割顶和桥:对于无向图G,如果删除某个节点u后,连通分量数目增加,则称u为图的割顶:如果删除某条边后,连通分量数目增加,则称该边为图的桥. 对于连通图删除割顶或桥后都会使得图不再连通. 我们利用dfs的性质来快速找出一个连通图中的所有的割顶和桥. 设low[u]为u及其后代所能连回的最早的祖先的pre[]值,pre[]为时间戳则当u存在一个子节点v使得low[v] >= pre[u]时u就为割顶 同理当 low[v] > pre[u]时 u-v为桥 看代码吧(转自http://blog.csdn

2018/2/12 每日一学 三分搜索

对于二分,设left,right为问题的两个极值,用min=left+(right-left)>>1或mid=(left+right)>>1,可以知道mid值,判断,然后进行更换. 显然,二分适用于单调函数,而对于一个二次函数就无效了. 这时,我们可以用三分搜索来做. 我们定义midl=(left+mid)>>1,midr=(right+mid)>>1.判断midl和midr就行了. 看看代码吧:(转自http://blog.csdn.net/u011787

2018/2/16 每日一学 A*搜索

A*搜索 我们知道dfs和bfs在搜索中会搜素一些完全不会搜的点,这是因为,他们只考虑到起点到当前点的作用,未考虑到终点. 我们不妨设f[i]=g[i]+h[i],其中g[i]为到i的最短路(已知),h[i]为i到终点的估计值.所以说,我们用f[i]做bfs 每次取出f最小的i,拓展,然后直到终点-- 那么h[i]怎么求?? 我们可以用曼哈顿距离或者欧式距离等等来表示,注意我们要用二叉堆来维护f数组. 代码目前网上很多,就不写了. 原文地址:https://www.cnblogs.com/Ale

2018/2/17 每日一学 RMQ

什么是RMQ? 给予n个数,对于区间[l,r]查询最小.最大值. 这就是RMQ. 怎么做? 我们不妨设f[i][j]表示从i开始的2^j个数极值. 显然,他表示的是[i,i+2^j-1],注意有-1(想想,为什么?) 那么我们不难得到递推式:f[i][j]=min/max(f[i][j-1]+f[i+1<<(j-1)+1][j-1]. 注意先枚举j,联系以下区间dp不难明白为什么先枚举j. 最后怎么查询??? 很简单,分治的思想. 假设我们查询[x,y],则ans=max/min([x][k]

2018/2/22 每日一学 AC自动机

AC自动机=trie树+KMP. 代码如下:(自行理解) #include<cstdio> #include<string.h> #include<math.h> #include<queue> #include<algorithm> #define N 500006 using namespace std; char st[1000005]; char keyword[55]; int n,m; int next[N][26],cnt[N],f