包的概念
在日常生活中有很多同名的人,为了将这些同名的人进行区分,就出现了身份证,每个人的身份证号都是不一样的。在Java语言里面,开发者难免会编写出同名的类,为了区分出不通人开发出来的类,Java引入了包的概念。
使用package声明包名
在类名前面使用关键字package加入包名来避免命名冲突问题,因为域名是世界上唯一的,所以建议使用公司倒写的域名来命名包名,通常是小写的
例如:package com.jh.score.system
上面包名的含义是monkey1024公司开发的score项目(学生成绩管理项目),system是score项目里面的一个模块。
假设这个score项目里面有学生模块、老师模块,可以这样进行命名:
学生模块:com.jh.score.student
在学生模块的包里面,可以放置一些学生相关的类,比如AddStudent.class、DeleteSudent.class
老师模块:com.jh.score.teacher
在老师模块的包里面,可以放置一些老师相关的类,比如AddTeacher.class、DeleteTeacher.class
其实这个包名就是文件夹的名称,如果按照上述命名,假设在我存放在电脑的f盘里面,F:\com\jh\score\student\AddStudent.class
注意:
package语句只能出现在.java源文件的第一行
package语句在一个java文件中只能有一个
如果没有package,默认表示无包名
创建一个添加学生类:
package com.jh.oa.student;public class AddStudent{
publicvoidadd(){
System.out.println("添加学生");
}
}
创建一个测试类
package com.jh.oa.student;public class Test01{
publicstaticvoidmain(String[] args){
AddStudent as = new AddStudent();
as.add();
System.out.println(as);
}
}
带包类的编译和运行
使用javac命令编译时,加上-d
例如:javac -d . HelloWorld.java
上面的.表示当前路径
运行时,使用java 包名.HelloWorld
需要加上包名
使用import关键字导入不同包下的类
将上面的Test01的包名修改一下
package com.jh.oa.system;
public class Test01{
publicstaticvoidmain(String[] args){
AddStudent as = new AddStudent();//报错找不到类 as.add()
System.out.println(as);
}
}
上面代码将会报错,因为两个类在不同的包里面,在Test01这个包里面,系统找不到AddStudent类,所以前面需要加上包名:
com.jh.oa.student.AddStudent as = new com.jh.oa.student.AddStudent();
每次用到这个类时都需要写上包名,比较繁琐,我们可以使用import关键字将不同包下的类导入
package com.jh.oa.system;
import com.jh.oa.student.*//导入这个包下的所有类 import com.jh.oa.student.AddStudent//导入这个包下的AddStudent类,建议使用这种方式
public class Test01{
publicstaticvoidmain(String[] args){
AddStudent as = new AddStudent();//这样就没问题了 as.add()
System.out.println(as);
}
}
注意:java.lang软件包下所有类不需要手动导入,系统自动导入,Object类,String类都在这个包里面