作用
对类文件进行分类管理;
给类提供多层命名空间;
写在程序文件的第一行;
类名全称为 包名.类名;
包也是一种封装形式。
总结
1.包与包之间进行访问,被访问的包中的类以及类中的成员,需要public修饰。
即:有了包,范围变大,一个包中的类要被访问,必须有足够大的权限,所以被访问的类要被public修饰;类公有后,被访问的成员也要公有才可以被访问。见下例:
package packa;
public class DemoA//被访问的类要被public修饰
{
public void show()//被访问的成员也要公有才可以被访问
{
System.out.println("DemoA show!");
}
}
2.不同包中的子类还可以直接访问父类中被protected权限修饰的成员。见下例:
//文件DemoA.java
package packa;
public class DemoA extends packb.DemoB
{
public void show()
{
System.out.println("DemoA show!");
method();
}
}
//文件DemoB.java
package packb;
public class DemoB
{
protected void method()//此时PackageDemo.java中无法直接访问,必须是继承它的子类才可以访问
{
System.out.println("DemoB method!");
}
}
3.包与包之间可以使用的权限只有两种:public和protected;
4.不同权限的访问情况:
导入import
为了简化类名的书写,使用关键字import,导入的是包中的类。见下例:
/*
classpath=c:\myclass;
c:\myclass\packa\DemoA.class
c:\myclass\packa\packb\DemoZ.class
import packa.*;//只导入了DemoA.class
import packa.packb.*;//导入了DemoZ.class
*/
建议:
不要写通配符*,需要用到包中的哪个类,就导入哪个类;
定义包名不要重复,可以使用url来完成定义,url是唯一的。
package www.bupt.edu.cn.DemoA;
package www.bupt.edu.cn.DemoB;
jar包
建立两个文件DemoA.java和DemoB.java:
//文件DemoA.java
package packa;
public class DemoA
{
public void show()
{
System.out.println("DemoA show!");
}
}
//文件DemoB.java
package packb;
public class DemoB
{
protected void method()
{
System.out.println("DemoB method!");
}
}