Java的外部类为什么不能使用private、protected进行修饰
来源:互联网 发布:制作软件程序 编辑:程序博客网 时间:2024/06/15 22:10
对于这个问题,一直没有仔细思考,今天整理一下:
对于顶级类(外部类)来说,只有两种修饰符:public和默认(default)。因为外部类的上一单元是包,所以外部类只有两个作用域:同包,任何位置。因此,只需要两种控制权限:包控制权限和公开访问权限,也就对应两种控制修饰符:public和默认(default)。
如果类使用了private修饰符,说明是个内部类。内部类的上一级是外部类,那么对应的有四种访问控制修饰符:本类(private),同包(default),父子类(protected),任何位置(public)。当一个内部类使用了private修饰后,只能在该类的外部类内部使用。
上面这些都是平时使用司空见惯的,但是为什么是这种情况呢?
可以想一下,一个java项目是不可能在一个class里面完成的。mvc模式中,是把类分为三层,一层层调用类。如果定义为私有的和受保护的就无法调用。换句话说,对于一个java文件,要么就是自己单独运行,要么就是被其他程序作为库调用,如果一个java文件的类被private修饰,那么是不是其他的程序或是类是无法使用它的,那么他作为一个单独的文件就没啥用了。如果它作为单个文件运行,类加载怎么找到它呢,因为它对外不可见。同时,也失去了类的存在意义。因此,类只有public和默认修饰符。
阅读全文
0 0
- Java的外部类为什么不能使用private、protected进行修饰
- 为什么类和接口不能使用private和protected?接口的方法不能使用private、protected、default
- java 普通class为什么不能是private或protected
- 为什么 private 不能修饰 class
- java修饰符public ,private ,protected 及默认的区别
- java 修饰符(public private protected friendly)的理解
- Java修饰符public,private,protected及默认的区别
- Java修饰符public,private,protected及默认的区别
- java中private、protected、public修饰的权限问题
- Java修饰符public,private,protected及默认的区别
- Java修饰符private、protected、public和default的区别
- Java修饰符public,private,protected及默认的区别
- [Java] 修饰符 public/private/protected 的具体区别
- Java private和protected修饰的内部类调用方法
- java private,protected,public,default修饰的区别
- java类成员属性修饰符default, public, private, protected
- 通过protected,private继承的子类不能通过基类指针进行访问。
- JAVA权限修饰符(public/protected/private)
- JAVA题目-数组3
- 用CSS让你的文字更有文艺范
- NSFZOJ #6003. 论战大原题
- 【UnityShader】屏幕空间全息扫描效果
- 网易2018校园招聘编程题
- Java的外部类为什么不能使用private、protected进行修饰
- JDBC
- Java 分布式服务架构
- HDU6212 Zuma(区间dp)
- 因子和(数论,算数基本定理,快速幂,逆元)
- Vmware本地yum源配置
- Floodlight学习笔记(1)
- 剑24-判断是否为二叉树后序遍历序列
- 深入探究C++中虚函数和虚析构函数的实现原理