`
yanchengxiaotubao
  • 浏览: 41799 次
  • 性别: 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。

分享到:
评论

相关推荐

    Think-in-JAVA-4th-Edition

    ### 《Think-in-JAVA-4th-Edition》核心知识点概览 #### 一、书籍简介 《Thinking in Java》是一本由Bruce Eckel撰写的经典Java编程书籍,被誉为是学习Java的最佳参考资料之一。该书适合具有一定Java基础的学习者...

    think-in-java

    《Think in Java》是Java编程领域的一本经典著作,由Bruce Eckel撰写,中文版的出现使得更多中国程序员能够深入理解和掌握Java编程语言的核心概念。这本书以其深入浅出的讲解方式,深受程序员们的喜爱,是许多初学者...

    think-in-java.pdf

    作者:贯穿本书,我试图在您的大脑里建立一个模型——或者说一个“知识结构”。这样可加深对语言的理解。若遇到难解之处,应学会把它填入这个模型的对应地方,然后自行演绎出答案。事实上,学习任何语言时,脑海里有...

    think java - java思维

    think java - java思维

    thinkinjava源码-Think-In-Java-Code:ThinkingInJava(第四版)书中源码以及课后练习代码

    Think-In-Java-Code Thinking In Java 书中源码以及课后练习代码(从第7章开始随着看书的进度一步步更新) 第七章 复用类 7.1 组合语法 7.2 继承语法 7.2.1 初始化基类 7.3 代理 7.4 结合使用组合和继承 7.4.1 确保...

    think in java 中文doc文档

    《Think in Java 中文文档》作为一本深入讲解Java编程语言的教材,不仅适合有志于深入学习Java的程序员,也适合那些希望拓展自己技术栈的初学者。本书通过系统性的结构和丰富的实例,帮助读者全面理解Java,并最终...

    think in java source code

    《Think in Java》是Bruce Eckel的经典编程教材,它深入浅出地讲解了Java语言的基础概念和高级特性。源码整理则为读者提供了实践和学习的机会,帮助理解书中的示例和理论。以下是对《Think in Java》源码中一些重要...

    Think in java第三版代码

    《Think in Java》是Java编程领域的一本经典著作,由Bruce Eckel撰写,深受程序员喜爱。这本书通过深入浅出的方式讲解了Java语言的核心概念和技术,包括面向对象编程、数据结构、算法以及网络编程等多个方面。"Think...

    Think in Java3

    《Think in Java 3》是一本深受欢迎的Java编程指南,由Bruce Eckel撰写,它以其详尽的解释和丰富的示例闻名。这本书是许多Java初学者和专业开发者的重要参考资料,旨在帮助读者深入理解Java语言的核心概念和机制。...

    Think Data Structures Algorithms and Information Retrieval in Java-OReilly(2017)

    Think Data Structures Algorithms and Information Retrieval in Java-OReilly(2017)

    think-in-java.rar

    《深入思考Java》是一套备受推崇的学习Java编程的资源,其RAR压缩包“think-in-java.rar”包含了丰富的学习材料,旨在帮助程序员从基础到高级全面理解Java语言。这个压缩包的核心内容围绕“java 学习 面向对象”这三...

    think in java 英文第四版 高清完整PDF版

    java think in java (英文第四版)至今为止 被认为是java教程之中权威作品之一

    think in java 练习

    《Think in Java》是 Bruce Eckel 的经典著作,它深入浅出地讲解了Java编程语言的核心概念和技术。这本书强调理解编程思想,而不仅仅是学习语法。练习题是学习过程中的重要部分,它们帮助我们巩固理论知识,提升实际...

    Think in java 源码构建编译

    Think in java 源码构建编译

    Think4V-UtubeDown-setup-3.2.6.exe

    Think4V-UtubeDown-setup-3.2.6.exe

    java学习-think in java

    think in java 文档

    Think in Patterns-0.9

    《Think in Patterns-0.9》是一本专门针对Java编程中的设计模式进行深入解析的教程。作者将《Think in Java》中的模式部分单独提取出来,旨在为读者提供一个更为集中、深入的学习资源,以帮助他们更好地理解和应用...

    Think in java(中文版)优质排版

    Think in Java(美)Bruce Eckel 著 陈昊鹏 译 引言 同人类任何语言一样,Java为我们提供了一种表达思想的方式。如操作得当,同其他方式相 比,随着问题变得愈大和愈复杂,这种表达方式的方便性和灵活性会显露无遗。 ...

    Think In Java 4(完美高清中文版).

    《Think In Java 4》是Java编程领域里一本极具影响力的著作,由资深程序员 Bruce Eckel 编著。这本书以其深入浅出的讲解方式和全面的知识覆盖而闻名,被誉为Java学习者的经典读物。中文版的完美高清版本为国内读者...

Global site tag (gtag.js) - Google Analytics