1. class的访问权限
class的访问权限只有public和package两种,不存在private和protected(内部类是特例)。
每一个编译单元(即.java文件)至多只能有一个public class,且如果有的话,该public class名必须与文件名相同。
class访问权限是member访问权限的基础。
2. member的访问权限
当一个class是可访问的时候,member的访问权限才有意义。
private、package、protected、public,具体的就不详细说了。
protected包含package权限。
7月27日补充:member的访问权限是针对类而言的
public: 对所有类可见。
protectd: 对其Ext Class可见 + package。
package: 对同一pkg内的类可见。
private: 仅对member所在的类可见。
我们这里说的都是Class,而不是Object。有时候在理解上会有这样的混淆:
class Test
{
private int i;
}
public class PrivateTest
{
public static void main(String[] args)
{
Test t = new Test();
System.out.println("i = " + t.i); // syntax error
}
}
我们的确是获得了Test对象t,i也的确是t的member,不过我们访问i是在PrivateTest类中,根据private的定义,这里依旧是会出错。
所以说,member的访问权限是针对类而言的,而不是针对对象。不能单纯地以为只要获得了对象(引用),就能随便访问对象中的所有成员。
10月10日补充:可见的意思
如果类A的字段i对类B可见,则在类B中可以通过类的对象引用(假设有A a = new A();)(如果是static字段,则是通过类名)来访问字段i,即:可以在类B中直接写a.i(如果是static字段,则是可以写A.i)。
那么,我们现在回头看,如果类A的字段i是:
public: 对所有类可见 --> 即:所有的类中都可以写a.i或是A.i
protectd: 对其Ext Class可见 + package --> 即:只有与类A同包的类,或是类A的子类中可以写a.i或是A.i
package: 对同一pkg内的类可见 --> 即:只有与类A同包的类中可以写a.i或是A.i
private: 仅对member所在的类可见 --> 即:只有类A本身可以直接用a.i或是A.i
这里又涉及到另外一个问题,即我自己常用的表达:private、package不可继承。其实这里private、package权限字段是由于对子类不可见所以不能继承。[#0x0006]里面的那个理解很好:可以理解为ext class隐式包含一个base class,base class根据member的访问权限决定是否将member暴露给ext class。
分享到:
相关推荐
0X2B循环for前置知识0X29再谈循环正文Lua除了while和repeat语句还提供了一种for循环语句.while和repeat语句循环终止条件可以是任
0X0E中学算术前置知识0X0D数学库函数正文有了三角函数、反三角函数、对数函数、求幂运算,中学阶段涉及的所有具体的数值计算基本就都可以求解。求此表达式的值:第
目录图例Stage1 入门Stage2 基础Stage3 字符串处理Stage4 理解函数Stage5 表结构Stage6 流程控制Stage7 模块Stage
1. 度量脚本执行时间 2. 记录时间 3. 计算时间间隔
域的定义如果交换环还额外满足以下条件,则称为域:乘法单位元和加法单位元不相等(1不等于0)。由于存在乘法逆元,就意味着可以进行“除法”,所以有的书上也把域称作
安全运营相关文章本篇整理一些安全运营相关的高质量文章[2] 体系化的WAF安全运营实践, 安全研究与实践,
NULL 博文链接:https://aoyi.iteye.com/blog/659179
NULL 博文链接:https://aoyi.iteye.com/blog/631929
NULL 博文链接:https://aoyi.iteye.com/blog/723571
STM8S207中断系统##pragma 0x原因.pdf,介绍中断的
#0 0x00002b9405ea1c38 in __lll_mutex_lock_wait () from /lib64/libc.so.6 #1 0x00002b9405e45e5f in _L_lock_4026 () from /lib64/libc.so.6 #2 0x00002b9405e42df1 in free () from /lib64/libc.so.6 #3 0x00002...
#define up 0x4800 #define down 0x5000 #define left 0x4b00 #define right 0x4d00 #define esc 0x011b #define enter 0x1c0d #define A 0x1e61 #define S 0x1f73 #define D 0x2064 #define W 0x1177 #define space...
部分指令下载后有全部:#define PU 0x01 #define STOP 0x02 #define RESET 0x03 #define CLI_INT 0x04 #define RD_STATUS 0x05 #define RD_PLAY_PTR 0x06 #define PD 0x07 #define RD_REC_PTR 0x08 #define RD_DEVID...
好多原版或克隆版win10/11 无法访问win7共享 0x80070035 在win10双击这个文件后重启电脑即可正常访问win7的共享
让您彻彻底底搞清楚回车符(0x0d)与换行符(0x0a)的区别!
WIN7访问局域网共享文件出现0X80070035错误的解决办法
#define PCD_IDLE 0x00 //取消当前命令 #define PCD_AUTHENT 0x0E //验证密钥 #define PCD_RECEIVE 0x08 //接收数据 #define PCD_TRANSMIT 0x04 //发送数据 #define PCD_TRANSCEIVE 0x0C //发送并接收数据 #define ...
1 具有菜单项 2 具有保存文件功能 3 具有帮助系统 ***********************************************/ #include ...#define ESC 0x011b ...#define ENTER 0x1c0d ...#define SCROL_LOCK 0x10
出现“错误代码:0x800704cf 不能访问网络位置”等提示,而您的工作组的其他机器却可以正常打开和访问这个共享文件夹,出现这种情况主要是Win7的一个已知问题引起的,解决办法,下载后解压有一个 devcon.exe文件,...
JMP 9 01001 JMP rs1,#value JMP r16,#0x27 48200027 PC <- r16 + 0x27 JMPL 9 01001 JMPL rdst,rs1,#value JMPL r31,r16,#0x27 4FE10027 r31 ; PC <- r16 + 0x27 LD 10 01010 LD rdst,LABEL LD r6,0x100 51800100 ...