Java中访问控制修饰符的详解和示例——Java学习
2024-10-09 11:40:37
Java中的四个访问控制修饰符
简述
在Java中共有四个:
- public —— 对外部完全可见
- protected —— 对本包和所有子类可见
- 默认(不需要修饰符)—— 对本包可见
- private —— 仅对本类可见
从上到下,public的开放程度最高。
- | 对外完全可见 | 对本包和所有子类可见 | 仅对本包可见 | 仅对本类可见 |
---|---|---|---|---|
访问控制修饰符 | Public | Protected | 默认(无修饰符) | Private |
同一包中的其它类 | ✓ | ✓ | ✓ | ✗ |
同一包中的子类 | ✓ | ✓ | ✓ | ✗ |
不同包中的其它类 | ✓ | ✗ | ✗ | ✗ |
不同包中的子类 | ✓ | ✓ | ✗ | ✗ |
简言之就是,public全开放,protected对本包和子类(不论是不是在本包中)开放,默认的只对本包开放(不论是不是子类),private仅对本类开放(只有定义它的类内部才能够使用,非常不开放)。
建议在定义每个类的私有字段,也就是成员变量时使用private修饰符,这样才能够确保类的封装性。
实例演示
定义两个包:A包和B包。
A包中有类:aFather 、aClass、aSon;B包中有类:bClass、bSon
定义类:aSon、bSon是aFather的子类。具体如下
包A
aFather.java
定义了一个父类aFather,和各实例字段,如下:
aClass.java
aClass为A包中的一个普通类。
显然在同一包中,除了**private** ,都可以正常访问父类的Public、Protected 和默认定义的实例字段。
aSon.java
aSon为A包(同一包)中的aFather类的子类
同样,同一包中的子类可以正常访问父类的Public、Protected、默认定义 的实例字段。
包B
bClass.java
bClass为B包中的一个普通类。
可以看出,非aFather子类的类:bClass 只能访问A包中类的 Public 的实例字段。
bSon.java
bSon为B包中的,aFather类(A包中)的子类。
而B包中的bSon类 是A包中aFather类的子类,可以访问父类(超类)中由Public、Protected定义的实例字段,其他的无法访问。
由此看出,开头所说:
- public —— 对外部完全可见
- protected —— 对本包和所有子类可见
- 默认(不需要修饰符)—— 对本包可见
- private —— 仅对本类可见
便更易于理解了!
最新文章
- java享元模式(flyweight)
- jQueryt过滤选择器
- Python—redis
- Ninject之旅之九:Ninject上下文绑定(附程序下载)
- java中使用junit测试
- sublime快捷键<;转>;
- Nest查询示例
- NGUI系列教程九(自制ListView)
- java时间比较
- hash_map和map的区别
- Live Writer Test
- spring mvc 与 jquery ajax
- java类加载小记
- Python HTML解析器BeautifulSoup(爬虫解析器)
- (转)Spring Boot 2 (七):Spring Boot 如何解决项目启动时初始化资源
- Win8驱动的兼容性问题
- (转)android import library switch语句报错case expressions must be constant expressions
- 转载:abstract的方法是否可同时是static,是否可同时是native,是否可同时是synchronized?
- 008-ThreadLocal原理分析
- (转)使用yuicompressor-maven-plugin压缩js及css文件(二)
热门文章
- 项目管理:如何显性管理并提升Story分解能力
- 不藏了,摊牌了,一张知识图谱整理完整Java并发体系,就问全不全
- 部署一套完整的Kubernetes高可用集群(二进制,v1.18版)
- WPF入门教程(一)---基础
- 毫不留情地揭开 ArrayList 和 LinkedList 之间的神秘面纱
- [leetcode/lintcode 题解] 一致性哈希 II &#183; Consistent Hashing II
- .NET Core学习笔记(7)——Exception最佳实践
- C语言中的 “>;>;”与“<;<;”
- ajax模拟表单提交,后台使用npoi实现导入操作 方式一
- Blob分析之bottle.hdev