包的定义
Ø 在Java程序之中的包,主要的目的是可以将不同功能的文件进行分割。在之前的代码开发之中,所有编译后的*.class文件都保存在了同一个目录之中,这样一来就会带来一个问题:如果出现了同名文件,那么就会发生文件的覆盖问题,因为在同一个目录之中不允许有重名文件。而要想解决同名文件冲突的问题,就必须设置不同的目录,因为在不同的目录下可以有重名文件,所谓的包实际上指的就是文件夹。在Java之中使用package关键字来定义包,此语句必须写在*.java文件的首行。
定义包
package com.ww.demo ; // 定义程序所在包,此语句必须放在首行
public class Hello {
public static void main(String args[]) {
System.out.println("Hello World !") ;
}
}
Ø 此时的程序代码功能就是在屏幕上输出一个字符串信息,但是唯一的区别是将Hello程序类定义在了一个“com.ww.demo”的包中(在定义包的时候出现了“.”,那么就表示子目录)。
Ø 当程序中出现包的定义之后,如果在编译程序时,就必须使生成的Hello.class保存在指定的目录下(此时应该保存在com\ww\demo目录下,与包名称结构相同),在JDK中提供了自动的打包编译指令:javac -d . Hello.java
Ø “-d”:生成目录,根据package的定义生成;
“.”:设置保存的路径,如果为“.”表示在当前所在路径下生成;
包的导入
Ø 使用包可以将一个完整的程序拆分为不同的文件进行分别保存,这样就会造成一个问题,不同包之间有可能要进行互相访问,那么此时就需要使用包的导入(import语句)操作。
包的导入
package com.ww.util;
public class Message {
public void print() {
System.out.println("Hello World !");
}
}
package com.ww.test;
import com.ww.util.Message; // 导入所需要的类
public class TestMessage {
public static void main(String args[]) {
Message msg = new Message(); // 实例化对象
msg.print(); // 调用方法
}
} //结果为 Hello World !
关于publicclass与class声明类的区别。
Ø publicclass:文件名称必须与类名称保持一致,在一个*.java文件里面只能够有一个public class声明,如果一个类需要被不同的包所访问,那么一定要定义为public class;
Ø class:文件名称可以与类名称不一致,并且一个*.java文件里面可以有多个class定义,编译后会形成多个*.class文件,如果一个类使用的是class定义,那么表示这个类只能够被本包所访问。
导入一个包中的多个类
Ø 如果说现在要在一个类中导入同一个包中许多类的时候,则这样每次都重复编写“import 包.类”语句会很麻烦,所以可以使用“包.*”的方式来代替一个包中多个类的导入操作。
package com.ww.test;
import com.ww.util.*; // 自动导入指定包中所需要的类
public class TestMessage {
public static void main(String args[]) {
Message msg = new Message(); // 实例化对象
msg.print(); // 调用方法
}
}