访问控制(或隐藏具体实现)与"最初的实现并不恰当"有关。

访问权限控制的等级,从最大权限到最小权限依次为:public,protected,包访问权限(没有关键字)和private。

将构建捆绑到一个内聚的类库单元:Java用关键字package加以控制,额而访问权限修饰词是存在与一个相同的包,还是一个单独的包而受到影响。

6.1 包:库单元

包内包含有一组类,它们在单一的名字空间之下被组织在了一起。

导入单个的类,可以在import语句中命名该类。

在java中对名称空间进行完全控制并为每个类创建唯一标识符组合可以解决名字冲突。

当编写一个java源代码文件时,此文件通常被称为编译单元。每个编译单元都必须有一个后缀名.java。而在编译单元内则可以有一个public类,该类名称必须与文件名称相同。

6.1.1 代码组织

当编译一个.java文件时,在.java文件中每个类都会有输出文件,该输出文件与每个类名称相同,只是多了一个.class后缀。

Java可运行程序是一组可以打包并压缩为一个Java文档文件的.class文件。Java解释权负责这些文件的查找、装载、解释。

类库实际上是一组类文件,其中每一个文件都有一个public类,以及任意数量的非public类。因此每个文件都一个构件。如果希望这些构件从属于同一个群组,就可以使用关键字package。

如果使用package语句,它必须是文件除了注释以外第一句程序代码。在文件起始处写:

package access;

package 和import关键字允许你做的,是将单一的全局名字空间分隔开。

6.1.2 创建独一无二的包名

Java解释器的运行过程:首先,找出环境变量CLASSPATH,CLASSPATH包含一个或多个目录,用作查找.class文件的根目录。从根目录开始,解释权获取包的名称并将每个句点替换成反斜杠,以从CLASSPATH根中产生一个路径名称。得到的路径会与CLASSPATH中的各个不同项相连接,解释权就在这些目录中查找与你所要创建的类名称有关的.class文件。

编译过的代码通常放置在与源代码不同的目录中,但必须保证JVN使用CLASSPATH可以找到该路径。

6.2 Java访问权限修饰符

6.2.1 包访问权限

默认访问权限没有任何关键字,通常就是包访问权限。

包访问权限允许将包内所有相关的类组合起来,以使它们彼此之间可以轻松地相互作用。

取得对某个成员的访问权限唯一途径是:

  • 1.使改成员成为public。
  • 2.通过不加访问权限访问修饰词将其他类放置于同一包内的方式给成员赋予包访问权。
  • 3.只有在两个类都处于同一个包内时,它才可以访问包访问权限的其他成员。
  • 4.提供访问器和变异器方法,以读取和改变数值。
6.2.2 public:接口访问权限

使用关键字public,就意味着public之后紧跟着成员声明自己对每个人都是可用的。

6.2.3 private:你无法访问

除了包含该成员的类之外,其他任何类都无法访问这个成员。

6.2.4 protected:继承访问权限

用于处理继承访问权限。

6.3 接口和实现

访问权限的控制常被称为是具体实现的隐藏。把数据和方法包装进类中,以及具体实现的隐藏,常共同被称为封装。其结果是一个同时带有特征和行为的数据类型。

出于两个重要原因,访问权限控制将权限的边界划在数据类型的内部。

第一个原因:设定可以使用和不可以使用的界限。

第二个原因:将接口和具体实现分离。

6.4 类的访问权限

访问权限修饰词页可以用于确定库中的哪些类对于该库的使用者是可用的。

还有一些额外的限制:

  • 1.每个编译单元都只能有一个public类。
  • 2.public类的名称必须完全与含有该编译单元的文件名相匹配。
  • 3.编译单元内完全不带public类也是可能的,这种情况下,可以随意对文件命名。

对于类的访问权限,仅有两个选择:包访问权限或oubic。

如果没有为类访问权限指定一个访问修饰符,它就会默认到包访问权限。

Java编程思想之六访问权限控制的更多相关文章

  1. Java之封装与访问权限控制(二)

    目录 Java之封装与访问权限控制(二) 包:库单元 import import static Java常用包 Java之封装与访问权限控制(二) 访问权限控制是具体实现的隐藏,是封装性的一部分体现. ...

  2. Java之封装与访问权限控制(一)

    目录 Java之封装与访问权限控制(一) 封装的概念 访问控制符 属性私有化 Java之封装与访问权限控制(一) 对于封装的概念,我总觉得自己还是挺了解的,但是真要我说,还真说不出个啥来.我只能默默地 ...

  3. java基础-类成员访问权限控制

    一 前言 这篇文章是很基础的一文,没多大深度,对于开发人员必然是熟练于心.本篇文章的主题是为什么java要设置类成员访问级别?其原因也很简单,就是为了面向对象的封装特性:将类成员使用不同的访问级别控制 ...

  4. Java编程思想:一个小小的控制框架

    这个实验我很喜欢,学到了非常多的东西: import java.util.ArrayList; import java.util.List; public class Test { public st ...

  5. (转)浅析Java中的访问权限控制

    原文地址: http://www.cnblogs.com/dolphin0520/p/3734915.html 今天我们来一起了解一下Java语言中的访问权限控制.在讨论访问权限控制之前,先来讨论一下 ...

  6. 浅析Java中的访问权限控制

    浅析Java中的访问权限控制 今天我们来一起了解一下Java语言中的访问权限控制.在讨论访问权限控制之前,先来讨论一下为何需要访问权限控制.考虑两个场景: 场景1:工程师A编写了一个类ClassA,但 ...

  7. JAVA笔记 -- 访问权限控制

    访问权限控制 没有权限控制的时候,由于所有的接口都是可以访问的.当一个类库部分代码,发现有更好的方法解决的时候,可能其他接口会发生改动.这会导致另一个地方的引用该类库的程序发生崩溃.为了解决这种问题, ...

  8. JAVA编程思想——分析阅读

    需要源码.JDK1.6 .编码风格参考阿里java规约 7/12开始 有点意识到自己喜欢理论大而泛的模糊知识的学习,而不喜欢实践和细节的打磨,是因为粗心浮躁导致的么? cron表达式使用 设计能力.领 ...

  9. 《Java编程思想》笔记 第六章 访问权限控制

    1.编译单元 一个 编译单元即 .java 文件 内只能有一个 public 类  且该文件名必须与public 类名 完全一致. 编译单元内也可以没有public类 文件名可随意. 2. 包:库单元 ...

随机推荐

  1. 【转载】使用宝塔Linux面板屏蔽某些IP访问你的服务器

    在服务器的运维过程中,有时候发现一些异常IP或者扫描漏洞攻击者IP访问你的网站,此时如果想屏蔽该IP访问你的服务器,可以通过云服务器厂商提供的安全组进行设置.如果服务器安装有宝塔面板,也可以通过宝塔面 ...

  2. HTML5 新增文本标签

    一.mark 标记文本 <mark> 标签定义带有记号的文本,表示页面中需要突出显示或高亮显示的信息. 通常在引用原文的时候使用 mark 元素,目的是引起当前用户的注意. 语法格式: & ...

  3. FreePascal - CodeTyphon 如何调整代码编辑器背景色?

    当前版本的CodeTyphon默认背景色是黑色,看起来很不习惯,通过下面操作,修改了它的代码编辑器的背景色: 1,打开CodeTyphon的菜单“工具”->“选项”. 2,选择左侧列表项目“颜色 ...

  4. 接口自动化--requests库封装

    前言 不管是自动化大佬还是自动化小白,都知道我们用python写接口自动化测试肯定是要用requests库来封装请求类的,下面就简单介绍下requests这个库 安装 一般都是直接采用pip命令安装: ...

  5. canvas详解---矩形绘制

    首先,就上述绘制弧线的章节进行一个小小的补充: 如果我们使用了context.beginPath();紧接着后面的context.moveTo(x,y),可以改为context.lineTo(x,y) ...

  6. live555流媒体框架介绍

    LIVE555 Streaming Media This code forms a set of C++ libraries for multimedia streaming, using open ...

  7. Spring Boot 中集成 Redis 作为数据缓存

    只添加注解:@Cacheable,不配置key时,redis 中默认存的 key 是:users::SimpleKey [](1.redis-cli 中,通过命令:keys * 查看:2.key:缓存 ...

  8. Eclipse 常用快捷键——IDEA 常用快捷键

    Eclipse 常用快捷键 熟练 单选注释 ctrl + / 多行注释 ctrl + shift + / 向下复制一行 (Duplicate Lines) ctrl+alt+down 删除一行或选中行 ...

  9. appium环境应该注意问题

    python中的script要加入到环境变量中 pip3 install appium-python-client(安装appium模块通过引入webdriver) 如果pip3不是内部命令解决方法 ...

  10. 关于vue+axios上传文件的踩坑分析

    上传文件是每个前端开发者都会遇到的问题,在之前实习期做了一个上传文件的功能,当时没有彻底搞明白问题所在,现在重新复盘下. 1.使用formData来上传文件,没有使用axios上传文件,之前在学校有做 ...