第六章 访问权限控制
来源:互联网 发布:linux怎么查看用户权限 编辑:程序博客网 时间:2024/06/02 15:41
第六章 访问权限控制
这一章讲的内容不是很难,都是我们在开发中常用的知识,这里讲得非常详细,很快就能够理解,所以主要还是多注意一下,同时也帮助我们加深印象。
6.1 包:库单元
包内包含有一组类,它们在单一的名字空间之下被组织在了一起。
例如,在Java的标准发布中有一个工具库,它被组织在java.util名字空间之下。java.util中有一个叫做ArrayList的类,使用ArrayList的一种方式是用其全名java.util.ArrayList来指定。
java.util.ArrayList list=new java.util.ArrayList();
这样写就使程序变得冗长了,因此可以转换使用import关键字
import java.util.*
这样就可以将代码简化成:ArrayList list=new ArrayList();
6.2 Java访问权限修饰词
public、protected和private这几个Java访问权限修饰词在使用时,是置于类中每个成员的定义之前的——无论它是一个域还是一个方法。每个访问权限修饰词仅控制它所修饰的特定定义的访问权。
如果不提供任何访问权限修饰词,则意味着它是“包访问权限”。因此,无论如何,所以事物都具有某种形式的访问权限控制。
6.2.1 包访问权限
简单的来说,就是同一个包当中的所有类的成员都是protected修饰的 或者没有任何修饰的都可以访问。但是与其他包就不能相互访问了。
6.2.2 public:接口访问权限
使用关键字public,就意味着public之后紧跟着的成员声明自己对每个人都是可用的,尤其是使用类库的客户程序员更是如此。
6.2.3 private:你无法访问
关键字private的意思是,除了包含该成员的类之外,其他任何类都无法访问这个成员。如果构造器用private修饰,则在其他内中就不能通过这个构造器来实例化对象了。
6.2.4 protected:继承访问权限
在继承关系中,当基类中的某个成员希望能够在导出类能够被使用,然后只要用protected修饰就可以了。
6.3 接口和实现
访问权限的控制常被称为是具体实现的隐藏。把数据和方法包装进类中,以及具体实现的隐藏,常共同被称作是封装。
出于两个很重要的原因,访问权限控制将权限的边界划在了数据类型的内部。第一个原因是要设定客户端程序员可以使用和不可用使用的界限。可以在结构中构建自己的内部机制,而不必担心客户端程序员会偶然地将内部机制当作是他们可以使用的接口的一部分。
这个原因直接引出了第二个原因,即将接口和具体实现进行分离。如果结构是用于一组程序之中,而客户端程序员除了可以向接口发送信息之外什么也不可以做的话,那么就可以随意更改所有不是public的东西,而不会破环客户端代码。
6.4 类的访问权限
在Java中,访问权限修饰词也可以用于确定库中的哪些类对于该库的使用者是可用的。如果希望某个类可以为某个客户端程序员所用,就可以通过public来修饰。这里还有一些额外限制:
1、每个编译单元(文件)都只能有一个public类。这表示,每个编译单元都有单一的公共接口,用public类来表现。该接口可以按要求包含众多的支持包访问权限的类。如果在某个编译单元内有一个以上的public类,编译器就会给出错误信息。这句话我们可以在Java程序中的类外面再加一个public修饰的类就会发现报错了,很容易检验的。
2、public类的名称必须完全与含有该编译单元的文件名相匹配,包括大小写。
3、虽然不是很常用,但是编译单元内完全不带public类也是可能的。这种情况下,可以随意对文件命名。
0 0
- 第六章:访问权限控制
- 第六章 访问权限控制
- 第六章 访问控制权限
- 第六章 访问权限控制
- 第六章 访问权限控制
- 第六章 访问权限控制
- 第六章 访问控制权限
- 第六章 访问权限控制
- 第六章 访问权限控制
- 第六章:访问权限控制
- 第六章 访问权限控制
- 第六章:访问权限控制
- 第六章 访问权限与控制
- 第六章——访问权限控制
- 【学习笔记】第六章 访问权限控制
- 第六章 访问权限
- 《Java 编程思想》--第六章:访问权限控制
- JAVA编程思想-第六章 访问权限控制
- linux yum-updatesd进程占用内存过多
- [其他] 域
- git stash 删除之前的提交 的回复方法
- hdu 2894 DeBruijin(暴力搜索 || 欧拉回路)
- Android 混淆代码总结
- 第六章 访问权限控制
- Eclipse 使用——代码自动提示
- C++类的私有继承
- Java Map 遍历的方法
- Java对日期的处理
- tcp学习系列
- 关于android sdk path 问题的彻底解决方法 Android_SDK_HOME
- 装好Oracle后打开sqlplus权限不足:cannot restore segment prot after reloc: Permission denied
- 【java】StringTokenizer类的使用