对于顶级类(外部类)来说,只有两种修饰符:public和默认(default)。因为外部类的上一单元是包,所以外部类只有两个作用域:同包,任何位置。因此,只需要两种控制权限:包控制权限和公开访问权限,也就对应两种控制修饰符:public和默认(default)。

如果类使用了private修饰符,说明是个内部类。内部类的上一级是外部类,那么对应的有四种访问控制修饰符:本类(private),同包(default),父子类(protected),任何位置(public)。当一个内部类使用了private修饰后,只能在该类的外部类内部使用。

上面这些都是平时使用司空见惯的,但是为什么是这种情况呢?

可以想一下,一个java项目是不可能在一个class里面完成的。mvc模式中,是把类分为三层,一层层调用类。如果定义为私有的和受保护的就无法调用。换句话说,对于一个java文件,要么就是自己单独运行,要么就是被其他程序作为库调用,如果一个java文件的类被private修饰,那么是不是其他的程序或是类是无法使用它的,那么他作为一个单独的文件就没啥用了。如果它作为单个文件运行,类加载怎么找到它呢,因为它对外不可见。同时,也失去了类的存在意义。因此,类只有public和默认修饰符。

最新文章

  1. android Activity runOnUiThread() 方法的使用
  2. vue-cli 组件的使用
  3. Bash条件判断
  4. requirejs按需加载angularjs文件
  5. vagrant homestead laravel 编程环境搭建
  6. xml问题报错处理
  7. mysql 5.6到percona 5.6小版本升级
  8. html 标签学习
  9. 【BZOJ 2243】染色 - 树链剖分+线段树
  10. 隐马尔科夫模型(HMM)的概念
  11. MAC mysql安装及设置
  12. pyqt columnView例子学习
  13. PSP个人软件开发工具
  14. unity中的MonoBehaviour.OnMouseDown()
  15. 在DFS和BFS中一般情况可以不用vis[][]数组标记
  16. HDU3410(单调队列)
  17. 微信小程序参数二维码6问6答
  18. python调用metasploit里的MS-17-010模块进行漏洞攻击
  19. MBR分区操作-增加、扩展、删除
  20. JavaScript中各种对象之间的关系

热门文章

  1. python3 练习题100例 (二十六)回文数判断
  2. C语言实例解析精粹学习笔记——42(插入排序)
  3. 005---Python数据类型--字典
  4. WPF中InkCanvas(墨水面板)用法
  5. win10 无法修改默认程序 默认打开方式的解决方法
  6. stm32--FatFs调试过程(SPIFlash)
  7. ethtool speed HowTo : Change Speed and Duplex of Ethernet card in Linux
  8. 现代web开发需要学习的15大技术
  9. storm_jdbc 最完整的版本
  10. devstack环境搭建