本章目标
了解多人开发的问题
掌握包的作用及定义
掌握包的导入语法及导入限制
了解系统常用包
掌握Java新特性 —— 静态导入
掌握jar命令的使用
多人开发
在Java中,可以将一个大型项目中的类分别独立出来,分门别类地存到文件里,再将这些文件一起编译执行,如此的程序代码将更易于维护
多人开发的问题
如果有多个开发人员共同开发同一个项目的时候,则肯定会出现类名称相同的情况。那么这样一来就会比较麻烦
包的定义
package是在使用多个类或接口时,为了避免名称重复而采用的一种措施,直接在程序中加入package关键字即可。
包的定义格式:
——package 包名称.子包名称 ;
为程序打包
package org.demo;//定义一个包 class Demo{//定义 Demo 类 public String getInfo(){//返回信息 return "Hello World!!!"; } } public class PackageDemo01 { public static void main(String[] args){ System.out.println(new Demo().getInfo());//实例化本包对象 } /* 结果: * Hello World!!! * */ }
import语句
之前所讲解的程序,两个类是存放在同一个包中的,因此代码与之前没有什么根本的不同,但是如果几个类存放在不同的包中,则在使用类的时候就必须通过import语句导入。
语法:
——import 包名称.子包名称.类名称 ; —> 手工导入所需要的类
——import 包名称.子包名称.* ; —> 由JVM自动加载所需要的类
关于“public class”与“class”声明类的完整补充
在本书的一开始,曾经为读者讲解过,如果一个类声明为public class则文件名称必须与类名称一致,而且在一个类中只能有一个public class,而如果使用class声明一个类,则文件名称可以与类名称不一致,但是执行的时候必须执行生成的class文件名称。除了这些之外,public class和class还在包的访问上有所限制,如果一个类只在本包中访问,不需要被外包访问,则直接声明成class即可,而如果一个类需要被外包访问,则必须声明为public class。
定义 org.demo.a.Demo 类
package org.demo.a; public class Demo{ public String getInfo(){ return "Hello World!!!"; } }
在另外一个类中引用Demo类
package org.demo.b; import org.demo.a.*;//导入不同包中的 Demo 类 public class PackageDemo01 { public static void main(String[] args){ System.out.println(new Demo().getInfo()); } /* 结果: * Hello World!!! * */ }
定义另一个 Demo 类
package org.demo.c; public class Demo{ public String getInfo(){ return "Hello World!!!"; } }
同时导入不同包的相同类
package org.demo.b; import org.demo.a.*;//包中存在 Demo 类 import org.demo.c.*;//包中存在 Demo 类 public class PackageDemo02 { public static void main(String[] args){ System.out.println(new Demo().getInfo()); } /* 结果: * HException in thread "main" java.lang.Error: Unresolved compilation problem: * The type Demo is ambiguous * * at org.demo.b.PackageDemo02.main(PackageDemo02.java:6) * */ }
package org.demo.b; import org.demo.a.*;//包中存在 Demo 类 import org.demo.c.*;//包中存在 Demo 类 public class PackageDemo03 { public static void main(String[] args){ org.demo.a.Demo d= new org.demo.a.Demo(); System.out.println(d.getInfo()); } /* 结果: * Hello World!!! * */ }
JAVA新特性 —— 静态导入
在JDK 1.5之后提供了静态导入功能,那么什么叫静态导入呢?如果一个类中的方法全部是使用static声明的静态方法,则在导入的时候就可以直接使用“import static”的方式导入,导入的格式如下:
——import static 包.类.* ;
package org.demo.e; public class Operate {//里面的方法全部是 static 类型 public static int add(int i ,int j){//加法操作 return i+j; } public static int sub(int i ,int j){//减法法操作 return i-j; } public static int mul(int i ,int j){//乘法操作 return i*j; } public static int div(int i ,int j){//除法操作 return i/j; } }
package org.demo.f; import static org.demo.e.Operate.*;//静态导入 public class StaticImportDemo { public static void main(String[] args){ System.out.println("3 + 3 = "+add(3,3));//直接调用静态方法 System.out.println("3 - 2 = " +sub(3,2));//直接调用静态方法 System.out.println("3 * 3 = " +mul(3,3));//直接调用静态方法 System.out.println("3 / 3 = " +div(3,3));//直接调用静态方法 } /* 结果: * 3 + 3 = 6 * 3 - 2 = 1 * 3 * 3 = 9 * 3 / 3 = 1 * */ }
jar命令的使用
当开发者为客户开发出了一套JAVA类之后,肯定要把这些类交给用户使用,但是如果所有的类是直接通过*.class的格式给用户,则会比较麻烦,所以一般情况下会将这些*.class文件压缩成一个文件交付给客户使用,那么这样的文件就称为jar文件(Java Archive File),如果要想生成jar文件,直接使用JDK中bin目录里的jar.exe就可以将所有的类文件进行压缩。