zoukankan      html  css  js  c++  java
  • 访问控制

    访问权限控制

    @(笔记)[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类型进行开发类库。

  • 相关阅读:
    代码重构~提取方法
    代码重构~提取到类
    不说技术~有时,开发者还是应该讲究一点!
    代码重构~封装成员变量
    将不确定变为确定~LINQ查询包含对不同数据上下文上所定义项的引用
    真实的用户,真实的中国互联网
    John Resig: JavaScript's Chuck Norris
    chrome插件IE tab使用技巧
    人生的疆域与生存的幻象—阅读丰富人生
    WPF 创建多行TextBox
  • 原文地址:https://www.cnblogs.com/jwlxtf/p/7909358.html
Copyright © 2011-2022 走看看