Java中的四个访问控制修饰符

简述

在Java中共有四个:

  1. public —— 对外部完全可见
  2. protected —— 对本包和所有子类可见
  3. 默认(不需要修饰符)—— 对本包可见
  4. 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定义的实例字段,其他的无法访问。

由此看出,开头所说:

  1. public —— 对外部完全可见
  2. protected —— 对本包和所有子类可见
  3. 默认(不需要修饰符)—— 对本包可见
  4. private —— 仅对本类可见

便更易于理解了!

最新文章

  1. java享元模式(flyweight)
  2. jQueryt过滤选择器
  3. Python—redis
  4. Ninject之旅之九:Ninject上下文绑定(附程序下载)
  5. java中使用junit测试
  6. sublime快捷键<转>
  7. Nest查询示例
  8. NGUI系列教程九(自制ListView)
  9. java时间比较
  10. hash_map和map的区别
  11. Live Writer Test
  12. spring mvc 与 jquery ajax
  13. java类加载小记
  14. Python HTML解析器BeautifulSoup(爬虫解析器)
  15. (转)Spring Boot 2 (七):Spring Boot 如何解决项目启动时初始化资源
  16. Win8驱动的兼容性问题
  17. (转)android import library switch语句报错case expressions must be constant expressions
  18. 转载:abstract的方法是否可同时是static,是否可同时是native,是否可同时是synchronized?
  19. 008-ThreadLocal原理分析
  20. (转)使用yuicompressor-maven-plugin压缩js及css文件(二)

热门文章

  1. 项目管理:如何显性管理并提升Story分解能力
  2. 不藏了,摊牌了,一张知识图谱整理完整Java并发体系,就问全不全
  3. 部署一套完整的Kubernetes高可用集群(二进制,v1.18版)
  4. WPF入门教程(一)---基础
  5. 毫不留情地揭开 ArrayList 和 LinkedList 之间的神秘面纱
  6. [leetcode/lintcode 题解] 一致性哈希 II · Consistent Hashing II
  7. .NET Core学习笔记(7)——Exception最佳实践
  8. C语言中的 “>>”与“<<”
  9. ajax模拟表单提交,后台使用npoi实现导入操作 方式一
  10. Blob分析之bottle.hdev