论坛登陆 用户名:  密 码:
设为首页  加入收藏
08年北京名校秋季招生
名牌院校免试入学宽进严出,突破考分限制,名校与你零距离,以下院校按报名先后顺序录取,24小时网上报名覆盖全国
  您现在的位置: 中国教育招生在线 >> IT >> JAVA认证 >> IT正文
《Java编程思想》(第二版)第5章:隐藏实现细节
 作者:佚名     2007-3-14 16:28:21        来源:不详  浏览次数:

 

 

 

 

 

 

 

 

我的笔记:

让变动的事物与不变的事物彼此隔离,使面向对象设计(OOD)的首要考虑.考虑一下程序库的版本更新吧。

组件程序库(components library)的概念以及谁有资格去用其中组件等问题Java是通过关键字package等等来控制的。

import关键字的用法,package关键字的用法,default package:同一个目录中的所有文件,如果没有明确的package声明,都会被视为该目录的default package.

当你编译数量较少的.java文件后,能够得到数量较多的.class文件。Java的jar压缩工具能将众多.class文件结合起来并予以压缩。

Java中没有类似C/C++的条件编译机制,原因是因为Java认为自己跨平台,而以前的条件编译正是为解决C/C++快平台问题而设计的。但是条件编译也有debug的功效,为了能更好的调试程序,你可以引入了原本在C中常用的断言机制(Assertion),即建立Assertion类,并另外定义一个空的Assertion类放到不同的名字空间,当要把程序代码从调试版改为出货版的时候只要在原程序中导入空的Assertion类所在的package即可。这个技巧可用于任何类型的条件编译程序代码上。

Java访问权限修饰词(access specifiers): public,protected,private 应该置于class内的每个成员的定义前,无论此成员究竟是数据成员或函数。缺省的访问权限被解释成"friendly"。即同一个package内的其他所有classes都可以访问friendly成员,但对package以外的classes则形同private。public充当了访问接口的角色,而private则表示"不要碰我"。protecked表示继承类可以访问。

基于两个理由我们需要控制访问权限:1.给客户提供明确的接口,划定界限。2.将接口和实现分离。

Class的访问权限:Java的访问权限也可以用来决定"程序库中哪些classes可以被程序库使用者所用",为classes设定的访问权限,可以控制客户端程序员或者说库使用者是否有权利产生某个class的对象。不过,这里还存在一些限制
   1.每个编译单元(文件)都仅能有一个public class .
   2.虽然通常不会这么做,但编译单元的确可以不含任何public class.这种情况下你可以任意给定文件名称.注意此时只要拿掉class定义前面的public 关键字即可,因为默认的是friendly,这表示同一个package内的其他classes能够乘胜该class的对象,而package之外则否.不过如果该class有某个static public 成员,那么客户端程序员即使无法生成该class的对象,仍然能够访问这个static成员.
   3.class不能是private,protected的.(内隐类inner class除外).如果你不希望任何其他人取用某个class,请将其所有的构造函数申明为private,如此便可以阻止任何人产生其对象.惟有两个例外,class static成员中可以办到,继承类也可以办到.请看下面的例子:
//Demonstrates class access specifiers.  Make a class effectively private with private constructors

class Soup{
  private Soup(){}
  public static Soup makeSoup(){
      return new Soup();
  }
}
public class Lunch{
 void test(){
    // Can't do this ! Private constructor:
    // Soup priv1=new Soup();
    Soup priv2=Soup.makeSoup();
 }
}
class soup示范如何将所有构造函数都声明为private以防止直接产生某个class对象。
如果你希望在执行Soup之前先尽享某些额外处理,或希望记录(或限制)究竟有多少个Soup对象被产生出来,这种做法十分有用.

 


我的问题:


当import java.until.*时 java.until.system.*会不会引入?

当class定义为public,而所有的构造函数定义为private,会有什么效果?




责任编辑:lss
  相关新闻
JSFToolbox--用Dreamweaver开发JSF
Java模板引擎Velocity基本语法
【JAVA基础】JDBC连接DB2数据库详解
为什么要学习Java,成为Java程序员
Java基础-漫谈EJB在Java中的应用
漫谈EJB在Java中的应用(二)
J2EE技术-漫谈EJB在Java中的应用
JAVA测试:使用JMock来实现孤立测试
看看如何在Struts应用中施展AJAX魔法
通过java.net.Socket类抓取网页内容
为什么要学习Java,成为Java程序员
Java基础-漫谈EJB在Java中的应用
漫谈EJB在Java中的应用(二)
运用Jakarta Struts的七大实战心法
通过Java Swing 看透MVC设计模式
开发保留标准浏览器功能的AJAX应用程序
Web框架趣谈之Java Web 框架的甜点
Web2.0时代的核心应用:Ajax简介
精华:AJAX开发简略(第一部分)
Thinking in AJAX(三)——AJAX框架汇总
  评论
现在有100人对本文发表评论
查看所有评论
 
推  荐
 
100本成功必读热销书
热门招生
  北京文理研修学院   前进大学
  北京明园大学   北京建设大学
  北京邮电大学世纪学院   北方工商管理学院
  联想软件定向委培班   香港数码动画学院
  青年企业管理研修学院   北京华夏管理学院
热门培训
网络化办公专家培训认证 电子科技大学软件学院
软件测试工程师培训认证 北大青鸟十大授权培训
IT硬件工程师培训认证班 北京环球雅思荷兰预科
JAVA开发工程师培训 潜能时代IT服务管理培训
网络信息化工程师培训 清华大学继续教育学院
论坛精选
 
有些细节是男人也该注意的风度!最容易读错的字
某强人手机里保存的30条短信 中国十大高薪职业
最感人的十大韩剧经典台词 嫁给工程师的N个理由
爆强!只有一句话的鬼故事 转贴教你如何做妖精
 女人一定要記住的話 女人最好别嫁给最爱的男人
城市联盟
 大连 上海 天津 广州 西安 深圳  天津  青岛  大连  福州  沈阳  青海  连云港  南京  吉林  厦门  威海  辽宁  呼和浩特
Copyright © 2006   www.edu999.com   All rights reserved. 中国教育招生在线  版权所有
北京市通信管理局[2004]字第552号函    京ICP证040442号