网站首页
JSP空间
动态资讯
开源项目
技术文档
资源下载
J2EE资源
客户论坛
在线支付
 
  技术文档>>JAVA>>新手入门>>基础入门>查看文档  
  《java编程思想》(第二版)第5章:隐藏实现细节     
  文章作者:未知  文章来源:水木森林  
  查看:82次  录入:管理员--2007-11-17  
 
  让变动的事物与不变的事物彼此隔离,使面向对象设计(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对象被产生出来,这种做法十分有用.
 
 
上一篇: 《java编程思想》(第二版)第4章:初始化和清理    下一篇: 《java编程思想》(第二版)第6:重复运用classes
  相关文档
一个象棋手机游戏的源代码 11-17
基于binary heap的a*算法 11-17
strutshow-to系列之数据库访问 11-17
j2ee web开发技术期待一次新的技术变革 11-16
jboss drools 4.0 发布 11-17
如何使用links方式安装eclipse插件 11-17
java相关基础知识(2) 11-17
java 面试中的陷阱[转载] 11-17
进阶:当前java软件开发中几种认识误区 01-07
java中的参数传递与对象clone详细讲解 11-16
jboss与sun的java标准之争日趋严重 11-17
main成员函数 11-17
java 学习方法浅谈 11-17
开源框架hibernate 3 的formulas(图) 11-17
spring入门指引之获取spring框架 11-17
jdbc基础教程之连接 11-16
java性能的优化(上) 11-17
Java参数传递方式 03-25
scna认证全面介绍 11-17
基于struts1.2.9框架的登录页面的处理过程 11-17
返回首页 | 关于我们 | J网章程 | JSP空间合租 | 客服中心 | 免责声明 | 常见问题 | 参观机房
本站主机空间代理至厦门市华众网络科技有限公司
《中华人民共和国增值电信业务经营许可证》
编号:闽B2-20050079
@2005-2008福建JSP技术网 版权所有 闽ICP备05000928号
技术电话:13616026886
邮箱:admin@fjjsp.com 站长QQ,点击这里给我发消息