package

包(package)

  1. 对文件进行分类管理;
  2. 给类提供多层命名空间;
  3. 写在程序文件的第一行;
  4. 类名的全称是 包名.类名;
  5. 包也是一种封装的形式;

关键字:package

  1. 要放在程序文件的第一行,包名所哟字母小写;
package packa;
public class DemoA //extends packb.DemoB
{
public  void show()
{
    System.out.println("demoa show run");   
}
}
  1. 有包的源文件在编译时要带参数编译命令格式为:
    javac -d 存储文件路径;
    注:若为javac -d,表示存放在当前目录下;
  2. 有package的源代码编译后将会在当前目录下自动生成名为包名的文件夹,所有该源码的class文件全部存放在该文件夹内;
  3. package编译的文件在执行是要输入全名,即:包名.类名;

知识点:类前面加了public后类名必须要与java文件名保持一致,一个java文件里边不能出现两个以上的公有类或者接口;

定义包时的相关问题

  1. 当在一个包中建立其他包中类的对象是,必须要写类名的全名或者先通过import导入该类的目录,否则找不到类文件;
  2. 如果引用的其他包不在当前目录下,需要设置classpath,告诉jvm指定包的位置;
  3. 包与包之间进行访问,被访问的包中的类以及类中的成员,需要public修饰,不同包中的子类还可以直接访问父类中被protected(关键字:权限修饰符)权限修饰的成员;
package packb;
public class DemoB 
{
protected /*保护*/ void method()
{
    System.out.println("demoB method run");
}
}

包与包之间可以使用的权限只有两种:pubic 、 protected;

  1. 相关权限的使用范围:

权限修饰符

public

protected

default

private

同一个类中





同一个包中




子类



不同包中


关键字:import(导入)

  1. 为了简化类名的书写,import导入的是包中的类,通过该关键字导入某目录下的类后,新建对象就无需再加包名;
  2. 建议,不要写通配符:”*”,需要用到包中的哪个类,就导入哪个类;
  3. 注意:当多个包中有相同类时,且都导入了,新建对象时就必须要写类全名;
  4. 建议定义包名不要重复,可以使用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:用于网络通讯的。