- 思考一个问题:为什么需要权限修饰符?
-
语言设计层面
1.1 java是纯面向对象语言
语法中不能在类外面定义单独的数据和函数 ,内部类除外(一种较为高级的用法)。代码的角度来看,访问数据和函数一般有两种形式:(1)[类名].[方法] / [类名].[变量] (2)[对象].[方法] / [对象].[变量] , 当然这里的变量是静态变量或者是常量,不是讨论的重点。能确定的是,一个类去访问一个类不能都直接访问其方法,而需要用到类名或者是类的对象。所以类和类、方法、变量的通讯必须要给他们一个权限的设置(没有修饰符的默认是完成default的权限修饰),不然维护所有变量成本是巨大的。
类、对象、方法、变量简易代码 -
项目的组织形式
项目 -》 … -》包 -》类
这样看来,用包的视图来看,不同的类之间就有两种关系。第一种:类A和类B在同一个包内。第二种:类A和类B不在同一个包内。
设想:
2.1 要如何初步控制不同包之间类的通信?
最简单的就是给类一个权限,定义类的被访问权限。
2.2为什么不做成访问者和被访问者的双向权限呢?
就好比交通事故追尾,后方车辆负全责。一是保持安全距离交规是硬规定,二是减少两车主定责上的诸多原因于是乎, 类的权限就出现了两种权限修饰符 public 和 default(不加public就默认为default)。 public 是可以给同包的类和不同包的类访问。default是只能给同个包的类访问。
-
-
具体的权限修饰符: default private protected public
- 修饰的对象
1.1 (外部)类 - 两种 (public default)
1.2 类中封装的变量、常量、方法、内部类 (public default protected private)
- 修饰的对象
对应被访问权限: