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:用于网络通讯的。