java中的访问控制权限

一、包:库单元

    一个java源代码文件  相当于  一个编译单元  相当于  xxx.java  相当于  有且仅有1个public类与活干其他类组成,public类名与文件名相同。

    写package的作用就相当于一个目录,把类都归结到一个目录下,这样就能避免不同功能相同类名的两个类冲突。编译时,解释器就会在特定包下找特定类。

  • 包的命名:
  1. 第一部分:按照类的创建者的反顺序的Internet域名。
  2. 第二部分:分解成机器上的一个目录
  • 解释器运行如下:
  1. 找出环境变量CLASSPATH,它包含一个或多个目录,用作查找.class文件的根目录,也就是指定编译起始目录。
  2. 从根目录开始,解释器获取包的名称,并把每个.变为FILE.SAPERATER,从CLASSPATH根中产生一个路径。
  3. 得到的路径会跟CLASSPATH的各个不同项相连接,解释器就在这些目录中查找相应的类。
  • 如果发生冲突:
  1. 同一个编译单元里用到了两个不同包下的同名的类时,可以通过指定全名的方式解决(   java.util.Vector v = new java.util.Vector()  )

 

二、访问权限

  • 成员访问权限
  1. 默认:不声明的话,就是包访问权限,同一个包下的可以访问,包外的无法访问。
  2. public:都可以访问。
  3. protected:继承访问权限,它的子类可以访问;同时也是包访问权限,同一个包内的可以访问。
  4. private:类外无法访问。
  • 类访问权限
  1. public:
  2. 包访问权限:此时最好将该类的域声明为private才有意义。

注:类访问权限不能是private的,如果不希望任何其他访问该类,可以将此类的构造器定义为private,不让其他可以定义该类的对象!

      protected也不行!

  • 如果一个类的构造器是private

    可以在这个类里在定义一个 public static 类名 的方法,在方法里调用构造器返回这个类的对象引用  (return new leiming())。然后在类外,调用这个方法来建立该类的对象引用。

 

 

详见<Thinking in java> P110 : 6.1 包:库单元

posted @ 2016-03-21 14:24  lqzzang  阅读(451)  评论(0编辑  收藏  举报