访问控制

Posted 老螃蟹

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了访问控制相关的知识,希望对你有一定的参考价值。

访问权限控制

@(笔记)[public][private][protect]

java访问权限修饰词
接口和实现
接口访问权限

前言
  访问控制和重构代码密切相关,重构代码就是指,再某些时候你需要优化代码,且这种优化不会影响,类消费者的使用,即你提供的类,使用方式不变。

包:库单元

  • 代码组织

      包名的出现是为了解决类名之间的冲突问题。
      关于编译单元: 编译单元是指Java源代码的文件被称为编译单元, 一个编译单元指能有一个public 修饰的类, 且该类必须和Java源码的名称相同
    c语言的可运行文件是, c源代码文件进行编译,连接,和其他文件绑定后产生的可运行文件, 而Java文件是通过一组可打包的文件,压缩打包成jar包的形式。
    pakage xx 关键字进行声明,这个类是类库xx 的一部分。 要想导入该类,我们就必须输入全类名或者输入,imort他的包名或者进行声明完整的名称:

 access/QualifiedMyClass.java
 import access.QualifiedMyClass.*
  • 独一无二的包名

    创建独一无是指用域名倒过来拿去当作包名的前面,以此达到独一无二的作用

  • 定制工具库

    定制工具库,只要遵从命名规范, 制作一个jar包, 和doc文档就可以了。

  • 用import改变行为

    c语言中用ifdef关键字进行编译判断, 编译判断会根据判断进行选择要编译的文件
    有一个包名对应目录的规则,

  • 堆使用句的忠告

    Java访问权限修饰词

  • 包访问权限
    • 如果没加访问权限的, 默认是包访问权限, 再同一个包内的类有权限访问
  • public接口访问权限
    • 任何人
  • private : 你无法访问;
  • protect: 继承访问权限

    里面主要叙述了:
    • public修饰的时候,全部都能访问,
    • 不加修饰符,放在一个包内,则包内成员都可以访问
    • protected 其子类可以访问,
    • 再相同目录下,且没有设置包名的化, 会被认为使用默认的包名, 当两个都没有规定包名的时候,且再同一个目录下,不用规定包名即可
    • private 常被用于单例,默认的包访问权限,,确保了类库的程序员,让客户端的程序员不能访问该类。
    • protected的案例: 如果一个类继承另一个类, 那个类中有一个方法是没有修饰符, 那就是包访问修饰符, 那么这个类将无法访问这个方法,与需求冲突,这个时候我们就要用protected

接口和实现

访问权限控制又叫做具体实现的隐藏,或是封装, 这么做不让客户端程序员误把内部机制当成他们使用的接口的一部分。
其中doc文档(Java思想中被称作类浏览器)用于,客户端程序员进行使用的手册,而不是去翻阅源代码进行查看。

类的访问权限

类访问权限同方法访问权限,只有一点之前写过的, 编译单元(Java源文件)只能有一个public 修饰的类,且这个类名要和文件名相同。

总结

访问控制的目的是为了:

  1. 不让客户端程序员(使用类库进行开发应用程序的程序员)碰他们不该碰的部分(内部机制的实现),这么做很可能影响应用程序的开发。
  2. 可以让类库程序员进行重构内部机制的时候不对客户端程序员编写应用程序产生影响。也就是说让客户端程序员不依赖底层的实现细节

这个是基本的类库的实现, 然而再开发场景中我们常用maven 的jar类型进行开发类库。

以上是关于访问控制的主要内容,如果未能解决你的问题,请参考以下文章

如何使控制台中的视图缓存片段过期?

MySQL系列:kafka停止命令

硬核!管理mysql数据库的工具

java开发的项目案例,大厂内部资料

片段管理访问错误可见 return false

片段中的媒体控制器