分享
 
 
 

《Java编程思想》(第二版)第5章:隐藏实现细节

王朝java/jsp·作者佚名  2008-05-31
窄屏简体版  字體: |||超大  

让变动的事物与不变的事物彼此隔离,使面向对象设计(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对象被产生出来,这种做法十分有用.

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有