第六章 访问权限控制

					**#第六章 访问权限控制**

6.1包:库单元

  • 当编写一个Java源代码文件(编译单元)时,每个编译单元必须有一个后缀.java,每个编译单元内只能有一个public类,该类名必须和文件名一模一样。
  • 如果在该编译单元内还有其他的类,那么在包之外是不可见的,因为它不是用public修饰的类。(内部类)
    6.1.1 代码组织
  • 当编译一个.java文件时,在.java文件中的每个类都会有一个输出文件,而该输出文件的名称与.java文件中的每个类名称相同,只是后缀名改为.class。
  • Java可运行程序是一组可以打包并压缩为一个Java文档文件(JAR)的.class文件,Java解释器负责这些文件的查找、状态和解释。
  • package语句必须是文件中除注释以外的第一句程序代码。(就是放在文件开头第一行就ok)
  • Java包命名规范使用小写字母。
  • package和import关键字是利用包名分隔以区分名字一样不同作用的类,防止名称冲突。
    6.1.2 创建独一无二的包名
  • package名称的第一部分是类的创建者的反顺序域名。
package www.xiaolijun.cn.类名;

Java解释器的执行过程

  • 找到环境变量CLASSPATH,CLASSPATH包含一个或多个目录,用于查找.class文件的根目录。
  • 从根目录开始,解释器包的名称并将每一个.替换成\或/。
  • 把CLASSPATH和包路径拼接得到最终目录,并查找.class文件。
  • Sun公司将Java2中的JDK改造的更聪明了一些,未设置CLASSPATH也可以编译并运行Java程序。
  • 不要错误的任务Java总是将当前目录视作查找行为的起点,CLASSPATH中的.表示当前目录
  • 引入两个名称相同的类会引起冲突,所以尽量不要用import *的方式(也占内存,影响程序性能)

6.2Java访问权限修饰符

public > protected > 包访问权限 > private

取得对某成员(属性和方法)的实现方法有下面四种情况:

  • 成员的权限设置为public。
  • 默认包访问权限,在同一包中的其他类可以访问。(前提是成员也是默认权限)
  • 权限设置为public或者protected,通过继承的子类(不同包也)可以访问。
  • 设置为private,提供访问器和变异器方法(get/set方法)获取
    6.2.2 public:接口访问权限
    使用public关键字,意味着被它修饰的成员对所有类可见。
    6.2.3 private:无法访问
    1、private的意思是,除了本类之外,其他任何类都无法访问这个成员。
    2、如果默认构造方法被private修饰,那么这个类无法被继承。
    3、private、static隐含final,因为无法继承。
    6.2.4 protected:继承访问权限
    基类的创建者希望某些特定成员,把它的访问权限赋予派生类也不是所有类。
    protected也提供包访问权限
    6.3 接口和实现
    访问权限的控制通常被称为是具体实现的隐藏
    封装:把数据和方法包进类中,以及其具体实现的隐藏共同称为封装
    将接口和实现分离
    6.4 类的访问权限
    每个编译单元最多一个public类
    public类名必须和文件名完全相同
    编译单元内可以没有public类,此时可以随意命名文件名,但这种方法很少用。
    类的访问权限只有两种(内部类除外):public、包访问权限
    如果不希望其他人对该类拥有访问权限,可以把构造器设置为private,单例模式中会用这种设置。
    6.5 总结
    控制对成员的访问权限有两个原因
    第一个原因:要设定客户端程序员可以使用和不可以使用的界限。
    第二个原因,也是最重要的原因,是为了让类库设计者可以更改类的工作方式,而不会影响对客户端程序员产生重大影响。
    http://www.spiderlucas.com/2018/11/05/bian-cheng-si-xiang-6-fang-wen-quan-xian-kong-zhi/
    https://www.cnblogs.com/jinggod/p/8425423.html
    在这里插入图片描述
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值