码迷,mamicode.com
首页 > 编程语言 > 详细

Java的外部类为什么不能使用private、protected进行修饰

时间:2018-08-27 01:03:49      阅读:149      评论:0      收藏:0      [点我收藏+]

标签:怎么   调用   项目   内部类   default   使用   cte   加载   private   

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

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

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

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

Java的外部类为什么不能使用private、protected进行修饰

标签:怎么   调用   项目   内部类   default   使用   cte   加载   private   

原文地址:https://www.cnblogs.com/langren1992/p/9539641.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!