`
yanchengxiaotubao
  • 浏览: 41243 次
  • 性别: Icon_minigender_1
  • 来自: 苏州
社区版块
存档分类
最新评论

Think in Java - Chatpter 5 隐藏实施过程

 
阅读更多

库的创建者必须能自由地进行修改与改进,同时保证客户程序员代码不会受到那些变动的影响。

 

使用 JAR文件时要注意一个问题:

必须将JAR文件的名字置于类路径里,而不仅仅是它所在的路径。所以对一个名为grape.jar 的JAR文件来说,我们的类路径需要包括:

CLASSPATH=.;D:\JAVA \LIB;C:\flavors\grape.jar 

 

import com.bruceeckel.util.*; 
/**
* 编译器遇到 import语句后,它会搜索由CLASSPATH 指定的目录,
* 查找子目录com\bruceeckel\util,然后查找名称适当的已编译文件
* (对于Vector 是Vector.class,对于 List 则是List.class)。
* 注意Vector 和List 内无论类还是需要的方法都必须设为public。
*/
public class LibTest { 
  public static void main(String[] args) { 
    Vector v = new Vector(); 
    List l = new List(); 
  } 
}

Java 访问指示符

不要错误地以为 Java 无论如何都会将当前目录作为搜索的起点看待。如果不将一个“.”作为 CLASSPATH 的一部分使用,Java 就不会考虑当前目录。

  • 默认的friendly - 意味着当前包内的其他所有类都能访问“友好的”成员,但对包外的所有类来说,这些成员却是“私有”(Private)的,外界不得访问。 - “包访问”权限
  • public:接口访问  - 意味着紧随在public 后面的成员声明适用于所有人,特别是适用于使用库的客户程序员。
  • private :不能接触 - 意味着除非那个特定的类,而且从那个类的方法里,否则没有人能访问那个成员。
  • protected:“友好的一种”  -

创建一个新类:

将public成员置于最开头,后面跟随protected、有好以及private成员。

好处:使用者可以从上向下一次阅读,并首先看到对自己来说最重要的内容(public成员,因为它们可从文件的外部访问,并在遇到非公共成员后停止阅读,后者已经属于内部实施细节的一部分了)

 

// 为控制一个类的访问,指示符必须在关键字class 之前出现。所以我们能够使用:
public class Widget { 
// 也就是说,假若我们的库名是mylib,那么所有客户程序员都能访问Widget——通过下述语句:
import mylib.Widget; 
或者 
import mylib.*; 

注意到一些额外的限制:

  •  每个编译单元(文件)都只能有一个public 类。每个编译单元有一个公共接口的概念是由那个公共类表达出来的。
  • public类的名字必须与包含了编译单元的那个文件的名字完全相符,甚至包括它的大小写形式。
  • 可能(但并常见)有一个编译单元根本没有任何公共类。此时,可按自己的意愿任意指定文件名。

对于类的访问只有两个选择:“友好的”或者public。若不愿其他任何人访问那个
类,可将所有构建器设为private。

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics