import关键字
导入相关类后再书写类名时无需再加上包名
import 包名.类名
//这个类不需要再加上包名
import 包名.*
//导入包中的所有类,所有的类都不需要加上包名
import明确类使用的类所属的包名字是packa,不会导入packa中子包中的类
不同的包中有了同名的类,import导入这两个包后,使用这两个类必须指定包名
jar包
将多个包打包压缩为jar包
package pack;
class JarDemo
{
public static void main(String[] args)
{
...
}
}
命令:jar –cvf a.jar pack
将pack包封装到了a这个jar包中
需要把jar包导入到classpath中
命令:set classpath=.\a.jar
导入当前目录下的jar包a,此时这个jar包就是包含类和包的那个文件夹
包的定义和使用
包机制:就是文件夹,对Java的文件进行分文件夹管理
1包的定义:使用关键字package
package mypack;
包名字母都是小写的
2多级包:
package mypack.a.b.c;
文件夹中还有文件夹
3包中类的运行
包给类提供了类名空间,必须把包中的类放到包名命名的文件夹中才能运行
运行:Java mypack.PackageDemo
mypack是文件夹和包名
4Javac –d 加目录,指定放置class文件的位置
5设置class路径:
set classpath=......
跨包访问
package packa;
//class DemoA
//如果跨包访问DemoA则发生错误,权限不足
public class DemoA
//public权限是可以跨包访问,default不能跨包访问
{
//void show(){...}
//权限不足,应该改为public
public void show(){...}
}
package mypack;
class PackageDemo
{
public static void main(String[] args)
{
//DemoA d=new DemoA();
//错误,有了包的类的类名必须加上包名 包名.类名
packa.DemoA=new packa.DemoA();
d.show();
...
}
}
set classpath=d:\myclass
//设置类和包的当前路径
javac -d d:\myclass DemoA.java
//类DemoA和所在的包packa都会编译在文件夹myclass中
Javac –d d:\myclass PackDemo.java
注意:被public修饰的类或者接口,所属的Java文件名必须和类或接口名一致
类的跨包继承
package packfu;
public class DemoFu
{
protected void showFu(){}
//只有子类可以使用
}
package packa;
public class DemoA extends packfu.DemoFu
//类的跨包继承
{
public void show()
{
showFu();
}
}
|
|