JAVA学习笔记(三十一)
包及访问控制权限
1.1 大型程序开发
在java中,可以将一个大型项目的类分别独立出来,分门别类的寻到文件里,在将这些文件一起编译执行,如此的程序代码更易于维护。
多人开发共同开发一个项目的时候,为了避免名称重复而采用的措施,,就要用包。
1.2 包的概念
paceage是在使用多个类或者接口时候,为了避免名称重复而采用的措施,直接在程序中加入package关键字即可。
包的定义格式:
package 包名称.子包名称
package liuchao.demo01;//定义一个包
class Demo
{
public String getInfo(){
return "hello world!";
}
};
public class PackageDemo01
{
public static void main(String args[]){
System.out.println(new Demo().getInfo());
}
}
实际上定一包之后,类名称就是:包名称.类名称.
所谓的包实际上就是一个文件夹,一个*.class文件要保存在一个文件夹中。
既然包本身就是文件夹所以在java编译指令中提供了专门的打包编译指令。
在编译的时候加上参数。
打包编译:
javac -d . PackageDemo01.java
此时生成*.class文件之后,就可以直接访问了。
执行:>java liuchao.demo01.PackageDemo01
必须加上包名称
1.3 包的导入
当一个包的class文件需要使用另一个包的class文件时候就需要包的导入。
包的导入需要import语句完成
语法:import 包名称.子包名称.类名称;->手工导入所需要的类
import 包名称.子包名称.*;->由jVM自动加载所需要的类
如果一个类需要被外包访问,则此类一定需要定义为:public class
而且在一般开发中对于一个*.java文件中往往都只定义一个类:public class 。
问题:那么两种导入语句,哪一个性能更高呢?
import 包名称.子包名称.类名称;->手工导入所需要的类
import 包名称.子包名称.*;->由jVM自动加载所需要的类
实际上来说这两种的性能都是一样的,因为如果使用后者,是由JVM帮助用户判定需要导入的类,不需要的类,是不会被加载进来的。
1.4 系统常见包
java.lang 基本包
java.lang.reflect 反射机制的包 java.lang的子包
java.util 工具包 一些常用的类库都在此包中。
java.sql 数据库操作包 提供了各种数据库操作的类和接口
java.net 完成网络编程
java.io 输入输出处理
java.awt GUI
java.swing 此包用于建立图形用户界面
java.text 提供了一些文本的处理类库
1.5 jar命令的使用
一般情况下将这些由*.class文件压缩成一个jar(java archive file)文件供客户使用,如果要生成jar文件,直接使用JDK中bin目录里的jar.exe就可以将所有的类文件进行压缩。
直接输入jar即可
jar命令的主要参数:
“C”:创建新的文档
“V":生成详细的输出信息
”F“:指定存档的文件名
1.6 访问控制权限
在java中存在四种访问权限
private:可以定义方法,属性,定义的方法和属性不能被类的外部所看到。
default :可以在本包中的任意地方访问
protected: 保护,不同包的非子类不可以访问
public :公共的,都可以访问