package
包(package)
- 对文件进行分类管理;
- 给类提供多层命名空间;
- 写在程序文件的第一行;
- 类名的全称是 包名.类名;
- 包也是一种封装的形式;
关键字:package
- 要放在程序文件的第一行,包名所哟字母小写;
package packa;
public class DemoA //extends packb.DemoB
{
public void show()
{
System.out.println("demoa show run");
}
}
- 有包的源文件在编译时要带参数编译命令格式为:
javac -d 存储文件路径;
注:若为javac -d,表示存放在当前目录下; - 有package的源代码编译后将会在当前目录下自动生成名为包名的文件夹,所有该源码的class文件全部存放在该文件夹内;
- package编译的文件在执行是要输入全名,即:包名.类名;
知识点:类前面加了public后类名必须要与java文件名保持一致,一个java文件里边不能出现两个以上的公有类或者接口;
定义包时的相关问题
- 当在一个包中建立其他包中类的对象是,必须要写类名的全名或者先通过import导入该类的目录,否则找不到类文件;
- 如果引用的其他包不在当前目录下,需要设置classpath,告诉jvm指定包的位置;
- 包与包之间进行访问,被访问的包中的类以及类中的成员,需要public修饰,不同包中的子类还可以直接访问父类中被protected(关键字:权限修饰符)权限修饰的成员;
package packb;
public class DemoB
{
protected /*保护*/ void method()
{
System.out.println("demoB method run");
}
}
包与包之间可以使用的权限只有两种:pubic 、 protected;
- 相关权限的使用范围:
权限修饰符 | public | protected | default | private |
同一个类中 | √ | √ | √ | √ |
同一个包中 | √ | √ | √ | |
子类 | √ | √ | ||
不同包中 | √ |
关键字:import(导入)
- 为了简化类名的书写,import导入的是包中的类,通过该关键字导入某目录下的类后,新建对象就无需再加包名;
- 建议,不要写通配符:”*”,需要用到包中的哪个类,就导入哪个类;
- 注意:当多个包中有相同类时,且都导入了,新建对象时就必须要写类全名;
- 建议定义包名不要重复,可以使用url来完成定义,url是唯一的;
例:某网站:www.address.cn;
定义包名:package cn.address.demo;
import packa.*;
import packb.*;
class PackageDemo
{
public static void main(String[] args)
{
DemoC c = new DemoC();
// packa.DemoA d = new packa.DemoA();
// d.show();
// packb.DemoB d = new packb.DemoB();
// d.method();
}
}
扩展:
java.lang : java的核心包 jdk1.2版本以后,该包中的类自动导入。
java.awt: 用于制作图形界面。
java.io:input output 用于操作设备上的数据。
java.util : 这里定义是java的工具类。集合,日期。
java.net:用于网络通讯的。