java权限修饰符问题——对类的修饰分析和对成员变量的修饰分析

news/2024/10/17 21:21:02/

我们应该站在更高的"维度"来分析权限修饰符,这样或许会一目了然

1.思考

假设,成员变量->外部类->包,相当于三个维度

首先,站在外部类的角度来看, 可分为外部类在相同包下和不同包下两种情况,通过对外部类以default和 public修饰来区分。

以包为外壳,分析它其中的外部类的访问权限
default class: 该类以default修饰,则和它在同一个包下的其他类都可以访问该类
public class: 该类以 public 修饰,则和它在不同包下,也包括同一包下都可以访问该类。

其次,站在成员变量的角度来看, 可分为成员变量在本类中、在非本类相同包中、在非本类不同包的子类中、在非本类不同包中的访问权限。

以外部类为外壳,来分析它其中的成员变量的访问权限

2.疑惑

(1).可能有人会说为什么不能用private和protected来修饰 class,我也在思考这个问题:
我觉得可以用类比的思维来想问题:
成员变量为private的时候,是其所在的外部类来使用,
那么如果外部类为private,则是不是应该由其所在包来使用,
但是我们最多只使用到类的级别,不会使用到包的级别,包只是一个范围。

(2).那么可能又有人说了,为啥default和public可以用,
我感觉java这么设计就是用来区分是不是在同一个包下,用两个修饰符足以区分。

(3).那可能还有人说了,怎么protected也不行,我不同包下的子类访问不可以吗?
我觉得不能这么想,当时分析成员变量的权限的时候,是分析的不同包下的子类,是从成员变量的维度->外部类->包,而我们分析外部类的权限时,应该站在比外部类高两个维度的情况下分析,也就是外部类->包->?,我们应该站在?维度来说,当外部类被protected修饰时,在相同?下,怎么怎么样,在不同?下怎么怎么样。而不是说,我分析外部类的权限,我还站在和分析成员变量一样的,包的维度来分析。

3.总结

其实吧,我感觉不用想的这么复杂,java设计者主要的想法应该还是用default和public来区分外部类在不同包的访问权限,用private、default、protected、public来区分成员变量在相同类、不同类同包,不同类不同包的访问权限。我感觉有了这层理解,再分析一些权限问题会很好理解,而不是死记。

当然,以上仅是我自己的一些思考,如有不对的地方,希望大家指正交流,再附上几个其他博主对为什么不能private和protected来修饰class的理解
https://www.cnblogs.com/AleiCui/p/12792565.html
https://www.zhihu.com/question/60501402
https://www.eolink.com/news/post/55838.html
https://zhidao.baidu.com/question/1305798964145550939.html


http://www.ppmy.cn/news/327793.html

相关文章

crs-2632 crs-2674

1.scan ip 启动失败,因为scan ip在/etc/hosts 中配置不正确 2.所在节点内存不足

1669G - Fall Down

搜索每一个点&#xff1b; 联系flood fill&#xff1b; #include <iostream> #include <algorithm> #include <cstring>using namespace std;const int N55;int t,n,m; char g[N][N];void dfs(int x,int y) {if(x1>n||g[x1][y]o||g[x1][y]*)// 一般三个条…

XTU 1271 Color

染色 http://202.197.224.59/exam/index.php/problem/read/id/1271 题目描述 Alice在玩一个游戏&#xff0c;她在一个mn的格子里&#xff0c;随机涂黑k个格子。然后她每次可以把一行或者一列的格子染成红色&#xff0c;但是这一行中不能有黑色的格子。 请问她最多能把多少个…

10.1寸工业液晶屏G101EAN02.2-lvds工控屏

G101EAN02.2是友达 (AUO)推出的一款10.1吋a-Si TFT-LCD液晶模组产品&#xff0c;它装配有WLED背光&#xff0c;含LED驱动器背光驱动&#xff0c;无触摸。此产品工作温度为 -20 ~ 70C&#xff0c;存储温度为 -20 ~ 70C&#xff0c;耐振动性为1.5G (14.7 m/s)。 它的典型特征总结…

SX1276 与SX1278扩频芯片的区别

2013年SEMTECH首次推出带扩频技术的Sub-GHz产品芯片&#xff0c;由于其相对传统FSK与GFSK在传输距离和抗干扰能力方面的优势而倍受市场关注&#xff0c;目前&#xff0c;SEMTECH的扩频芯片SX1276/7/8覆盖了几乎整个Sub-1GHz的4个频段&#xff1a;433/470/868/915M。 其中&#…

sgu106-109

sgu106-109写的时间也有点长了&#xff0c;懒得讲了 &#xff1d; &#xff1d; 就粗略用别人的博客吧 sgu106是关于不定方程&#xff0c;用了扩展欧几里德&#xff0c;下面的博客写的非常好 http://blog.csdn.net/volzkzg/article/details/7427233 sgu107就是一个发现规律的问…

sgu 128

题意&#xff1a; 在平面上有N个点&#xff0c;现在要求一些线段&#xff0c;使其满足以下要求&#xff1a; a&#xff0e; 这些线段必须闭合 b&#xff0e; 线段的端点只能是这N个点 c&#xff0e; 交于一点的两条线段成90度角 d&#xff0e; 线段都必须平行于坐标轴 e&#x…

SGU 221

题目大意&#xff1a;给你一块n*n的国际象棋盘&#xff0c;放k个象&#xff0c;有多少种互不攻击的方法。 我们可以把棋盘转45度&#xff0c;那么象就可以看成车了&#xff0c;而且黑格象白格象不可能互相攻击&#xff0c;于是我们考虑白格象。 我们先把每一斜行的格子数拿出…