1.包(package):
对类文件进行分类管理
给类提供多层命名空间
写在程序文件的第一行
类名的全称是 包名.类名
包也是一种封装形式
2.包之间的访问:
package pack;
public class PackDemo{//类必须用public修饰,才能被其他包访问
public void show(){//方法必须用public修饰,才能被其他包访问
System.out.println("pack.PackDemo.show()");
}
}
package mypack;
/*javac -d . PackageDemo.java 在当前目录下创建mypack包,并将PackageDemo.java编译成类文件
存放在mypack包中
java mypack.PackageDemo 运行mypack包中的PackageDemo类文件
*/
class PackageDemo
{
public static void main(String[] args)
{
pack.PackDemo p = new pack.PackDemo();//使用类的全名:包名.类名
p.show();
}
}
3.包之间的继承
protected:权限修饰符,只提供给子类使用的权限
包与包之间只有两种权限修饰符:public protected
权限修饰符小结:
public
protected defaultprivate
同一类中 ok
ok ok
ok
同一包中 ok
ok ok
子类 ok
ok (不同包中)
不同包中 ok
package packfu;
public class PackDemoFu{
protected void show(){//只提供给子类使用
System.out.println("PackDemoFu.show");
}
}
package pack;
public class PackDemo extends packfu.PackDemoFu{//继承packfu包中的PackDemoFu类
public void method(){
super.show();//调用父类的show方法
}
}
package mypack;
class PackageDemo
{
public static void main(String[] args)
{
pack.PackDemo p = new pack.PackDemo();//使用类的全名:包名.类名
p.method();//调用子类的方法
}
}
4.import:导入包中的类,可以简化类名书写(不用鞋类的全名)
for example:
pack\DemoA.class
\DemoB.class
\pack_son\Demo.class
import pack.DemoA;
import pack.*;//导入DemoA.class 和 DemoB.class,而不导入子包中的DemoA
import pack.pack_son.DemoA;
如果不同包中的类名重名了,即使导入了也必须写类的全名
5.jar:java的压缩包,将生成的类文件打包,可以直接运行。