详细的解说public,protected,Default和private的权限问题

让人更好的了解public,protected,Default和private他们之间的权限问题,我会做一个直观的表格。通过一步一步的实验,将这个表格填写完整,让后在做一下总结,这样他们四个之间的关系,就会非常直观的展现出来,简单易懂,清楚明了。由于是详细的解说,可能篇幅会比较长,如果有读者想直接知道结论和结果,可以直接看五个步骤后的完整表格,最终的结论。

表格如下:

这样我会一步一步的完善这个表格,第一个实验,检验当前包,同一个类,中他们四个有的区别。

一. 当前包同一个类

在第三个方法中,并没有出现default,那是省略,并且必须省略,写出来就不对了。这样来输出一下结果是:

四个都可以很好的输出出来,这样写一下表格,

 二. 当前包别的类

这样编译一下,得出的结果是:

可以看出,除了private,都是编译通过了,这样完善一下表格:

三. 别的包里面的别的类

我们分别在不同的包里面建立两个文件

文件 1

另外一个包里建立  文件 2

先把文件1编译出来,然后我们来试着编译文件2,看看结果如何:

很明显可以看出除了public可以编译,其他的三个都不可以,这样我们再次完善一下表格:

四.自己包继承关系的类

这样我们在试验时候,建立两个文件就可以了,一个是父类,一个子类,并且在同一个目录下:

 文件 1

文件 2

这样我们来就来运行一下,看看结果:

可以看出只有private不可以,这样继续完善一下表格:

五. 从别的包里面继承关系的类

这个我们和上一个一样,建立一个父类,一个子类,不过不在同一个包里面:

文件 1

文件2

这样我们来运行一下,

可以看出,private和protected没有被输出,完成表格的最后一项,

这样的话,public,protected,default和private的权限范围就出来,总结一下

(1) public就是公共的,没有权限,只要可以找到,就可以调用。

(2) protected如果有继承关系,无论在哪里都可以调用。但是如果没有继承关系,不同包的时候就不可以调用。

(3) default 不管是不是继承关系,只要是不同包,就不可以调用。

(4) private 只能是在当前包里面的同一个类里面自己使用。

这样他们之间的权限问题就很明确了。谢谢观看阿童木与小丸子的博客!

最新文章

  1. linux的帮助信息获取以及man章节的划分
  2. Semantic UI – 完全语义化的前端界面开发框架
  3. Tomcat https自制证书和浏览器配置
  4. Windows10安装MongoDB
  5. addEventListener和on的区别
  6. GDI+技术
  7. RabbitMQ(三) -- Publish/Subscribe
  8. zw·准专利·高保真二值图细部切分算法
  9. 撸一撸腾讯的微信支付(C#)
  10. Assembly(c#中简单说明[转]
  11. Scanner scanner=new Scanner(System.in)
  12. Java实现验证码图片
  13. Arrar.prototype.map()的用法
  14. Glide 这样用,更省内存!!!
  15. 《Thinking in Java》学习笔记(一)
  16. 用servlet验证密码2
  17. JavaScript事件起泡与捕获
  18. 代码: 两列图片瀑布流(一次后台取数据,图片懒加载。下拉后分批显示图片。图片高度未知,当图片onload后才显示容器)
  19. SSH的配置文件
  20. switch()语句

热门文章

  1. 邁向IT專家成功之路的三十則鐵律 鐵律二十七 IT人夢想之道-實踐
  2. 【hibernate】hibernate和mybatis的比较
  3. iOS开发 NSArray技巧
  4. Nginx优化指南+LINUX内核优化+linux连接数优化+nginx连接数优化
  5. Solaris文件系统管理
  6. Spring学习之事务注解@Transactional
  7. ffplay 播放m3u8 hls Failed to open segment of playlist 0
  8. DB 【ACID】
  9. Java IO 类
  10. Logical Volume Manager (Linux)