Java之访问控制

Java之访问控制

Java 引入访问控制的原因

  • 防止用户(客户端程序员)接触他们不应该接触的工具。对于数据的内部机制,这些工具是必需的,但是他们并不属于用户接口的一部分,用户不需要直接接触不应该接触的工具,避免类的内部被破坏。
  • 将变与不变的部分分离,允许库设计者改变类的内部工作机制。同时不必担心会对客户程序员产生影响,特别当库设计者要重构代码时,接口与事实细节早已进行了更明确的分割和保护,库设计者可以更高效的重构。

访问控制的最终目的是实现 高内聚,低耦合 的目标

Java 访问控制的修饰词

Java 提供了四个访问控制的修饰词,按照控制级别由小到大依次为 privatedefaultprotectedpublic

1、 private : Java 中对访问权限控制最窄的修饰词,一般称为 “私有的” 。被其修饰的属性以及方法只能被该类的对象访问,其子类不能访问,更不允许挎包访问。类的良好封装就是通过 private 关键字实现的。调用方式:在包含类中直接调用。

2、 default :即不加任何访问修饰词,通常被称为 “默认访问权限” 或者 “包访问权限” 。在该模式下,只允许在同一个包中进行访问。调用方式:通过类实例(静态方法通过类调用)调用。

3、 protected :介于 publicprivate 之间的一种访问修饰词,一般被称为 “保护访问权限” 。被其修饰的属性以及方法既能被类本身的方法及子类访问,又能被不同包下该类的子类访问。调用方式:在派生类中直接调用。

4、 public : Java 中访问限制最宽的修饰词,一般称为 “公共的” 。被其修饰的类、属性以及方法不仅可以跨类访问,而且允许挎包访问。调用方式:通过类实例(静态方法通过类调用)调用。

用表格来展示四种修饰词的访问权限范围:

权限 类内 同包 不同包子类 不同包非子类
private Yes No No No
default Yes Yes No No
protected Yes Yes Yes No
public Yes Yes Yes Yes

留心脚下

在 Java 中,访问权限修饰词也可以修饰类。

使用方法:将修饰词置于 class 前边即可。

类的修饰符只有 publicdefault ,它不可以是 privateprotected (内部类除外)。

知识补给

类的定义限定:

1、每个 Java 文件只能有一个 public class

2、 public class 的名称和 Java 文件的名称必须保持一致

3、 Java 文件中可以没有 public 修饰的 class ,这个时候会有一个默认的权限,即包访问权限,此时文件的名称就没有限定。这种方式会降低代码的可读性和可维护性。

你可能感兴趣的:(Java学习,Java之访问控制)