目录
简介
java提供访问修饰符,以供类库开发人员向客户端程序员指名哪些可用哪些不可用。
访问权限控制等级,从大到小依次为:public,protected,包访问权限(没有关键字)和private
包:库单元
包内包含有一组类,它们在单一的名字空间之下被组织在了一起。
比如:在java的标准发布中有一个工具类,它被组织在java.util名字空间下。java.util中有一个叫ArrayList的类,使用ArrayList的一种方式是用其全名java.util.ArrayList来指定。
而使用import语句可以导入该类
当编写一个java源代码文件时,此文件通常被称为编译单元(有时候也叫转译单元)每个编译单元都必须有一个后缀名**.java**,而在编译单元内则可以有一个public类,该类的名称必须与文件的名称相同(包括大小写,但不包括后缀.java)每个编译单元只能有一个public类,否则编译器不接受。如果该编译单元之中还有额外的类的话,那么在包之外的世界是无法看见这些类的。因为这些都不是public,而它们主要的功能是为了public类提供支持。
代码组织
当编译一个.java文件时,在.java文件中的每个类都会有一个输出文件,而该输出文件的名称与.java相同,只不过多一个.class。因此,在编译少量.java文件之后,会得到大量的.class文件。
java可运行程序是一组可以打包并压缩为一个java 文档文件(JAR,使用java的jar文档生成器)的.class文件。java解释器负责这些文件的查找,装载和解释。
什么叫类库
类库实际上是一组类文件。其中每个文件都有一个public类,以及任意数量的非public类。因此每个文件都有一个构件。如果希望这些构件从属于同一个群组,就可以使用package关键字
package
使用package语句必须在文件除了注释之外第一句
package access
者声明该编译单元是名为access的类库的一部分。
定制工具库
可以合理的创建属于自己程序代码,比如你可写一些print类
,然后再从其他类中用import导入,从而实现print
java访问权限修饰符
首先了解下图
包访问权限
默认访问权限没有任何关键字,通常是指包访问权限。这意味着当前的包中的所有其他类对那个成员都有访问权限,但对于这个包之外的所有类,则无法访问
public:接口访问权限
使用public之后意味着对紧跟着的每个成员声明自己对每个人都是可以用的。
protected:继承访问权限
简单点讲,protected对于同一个包中的元素和继承类的元素声明自己是公共的,而对于不是该包,且不是继承与该类的类是不支持的
private:私有访问权限
只要本类才能访问。
接口和实现
访问权限的控制常被称为是具体实现的隐藏。把数据和方法包装进类中,以及具体实现的隐藏,常共同称作封装。
处于两个很重要的原因,访问控制将权限的边界换份再了数据类型的内部。第一个原因是要设定客户端程序员可以使用和部可以使用的界限。
第二个原因,将接口和具体实现进行分离
类的访问权限
在java中,访问权限修饰符也可以用于确定库中的那些类对于该库的使用者是可用的。
为了控制某个类的访问权限,修饰词必须在class关键字之前。
这里有些关于类用public的限制
1.每个编译单元(也就是上面所说的类.java文件)只能出现一个public类
2.public类的名称必须完全与含有该编译单元的文件名相匹配
3.虽然不是很常用,但是编译单元内完全不带public类也是可能的。
总结
无论什么样的关系中,设立一些为各成员所遵守的界限始终很重要。