一、包:库单元
  一个java源代码文件相当于一个编译单元相当于xxx.java相当于有且仅有1个public类与活干其他类组成,public类名与文件名相同。
  写package的作用相当于一个目录,把类都归结到一个目录下,这样能避免不同功能相同类名的两个类冲突。编译时,解释器会在特定包下找特定类。
  包的命名:
  第一部分:按照类的创建者的反顺序的Internet域名。
  第二部分:分解成机器上的一个目录
  解释器运行如下:
  找出环境变量CLASSPATH,它包含一个或多个目录,用作查找.class文件的根目录,也是指定编译起始目录。
  从根目录开始,解释器获取包的名称,并把每个.变为FILE.SAPERATER,从CLASSPATH根中产生一个路径
  得到的路径会跟CLASSPATH的各个不同项相连接,解释器在这些目录中查找相应的类。
  如果发生冲突:
  同一个编译单元里用到了两个不同包下的同名的类时,可以通过指定全名的方式解决(   java.util.Vector v = new java.util.Vector()  )
  二、访问权限
  成员访问权限
  默认:不声明的话,是包访问权限,同一个包下的可以访问,包外的无法访问。
  public:都可以访问。
  protected:继承访问权限,它的子类可以访问;同时也是包访问权限,同一个包内的可以访问。
  private:类外无法访问。
  类访问权限
  public:
  包访问权限:此时好将该类的域声明为private才有意义。
  注:类访问权限不能是private的,如果不希望任何其他访问该类,可以将此类的构造器定义为private,不让其他可以定义该类的对象!
  protected也不行!
  如果一个类的构造器是private
  可以在这个类里在定义一个 public static 类名 的方法,在方法里调用构造器返回这个类的对象引用  (return new leiming())。然后在类外,调用这个方法来建立该类的对象引用。