A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

© 321哈哈哈 中级黑马   /  2017-9-26 23:03  /  1074 人查看  /  2 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 321哈哈哈 于 2017-10-12 02:25 编辑

访问权限控制:所有事物都具有某种形式的访问权限控制
作用:让客户端程序员看到什么对他们重要,什么是可以忽略的
让类库设计者可以更改类的内部工作方式,而不会担心对客户端程序员产生重大影响
犯错是相对安全的,更加放心的进行试验,完成项目
类库设计员尽可能将一切方法设定为private的,仅向客户端程序员公开愿意让他们使用的方法,他们讲类库聚合为一个应用程序或者一个更大的类库

修饰类成员的情况
包访问权限
有助于吧类聚集在一个包里,使它们彼此之间可以轻松的相互作用
同一个包内的类可以访问该成员,不在一个包就不行
protected:继承访问权限
比起上面扩大了一点范围,子类也可以访问该成员
public接口访问权限:公共接口
private只有自己类可以访问这个成员
只是该类的一个“助手”的方法要标记为private
通常所有的字段指定为private
包访问权限是我们常使用的权限,通常考虑的是哪些成员是明确公开给客户端程序员的,声明为public;还有哪些需要声明为private,私有的“助手”方法

类的访问权限
用public:作为公共接口
包访问权限:“助手”类
确保客户端程序员不会依赖隐藏在包里的任何特定实现细节
private 和 protected 修饰类是没有意义的

背景知识:
包:库单元
  将构件捆绑到一个内聚的类库单元内
  类库实际上是一组类文件
  java解释器负责这些文件的查找、装载和解释:先找CLASSPATH、结合类的package语句找到类
  CLASSPATH要写到包最上层目录的父目录
  定制工具库、使用静态导入,例如:import static net.mindview.util.Print.*;
  用import改变行为:创建两个包,分别含一个相同的类,都有一个debug(),但方法内容不同;在调试和发布版用静态导入不同的方法。
封装:把数据和方法包装进类中;具体实现的隐藏
tip:关键字extends 意味扩展
包访问权限的成员会被子类继承,但无法使用(如果和父类不在同一个包),改为用protected修饰
一个包访问权限的类,有一个public static成员;客户端程序员不能生成该类对象,但能调用该成员??(没试验成功,在包外面连这个类都看不到,怎么调用它的成员)
将类的成员按照访问权限从高到低来排列,增强代码可读性,public的成员可以外部调用,private的是内部实现细节,可以不理会。(阅读说明文档更清晰)
Singleton(单例):
  唯一的构造方法标记为private;定义一个private static成员变量为本类对象;一个public static方法返回该成员
  始终只会有一个该类实例;只能通过指定方法访问

您需要登录后才可以回帖 登录 | 加入黑马