Reading "Thinking in Java" #4

Java自定义库与访问控制
本文详细介绍了在Java中自定义程序库的过程,包括如何定义package,编译后的CLASSPATH设置,以及如何在系统环境变量中正确配置路径。此外,还深入探讨了访问修饰符private的使用限制和注意事项。

关于自定义一个程序库(library),在Java里也就是定义一个package。例如,我有一个测试用的package, com.smilereader.test。编译后的CLASSPATH是:

D:\develop\eclipse\workspace\TestScoping\bin\com\smilereader\test

注意这个路径的最后部分,com\smilereader\test,如同package名。(关于com,我打算不久买下smilereader.com代替.biz......)而相对应的,在系统环境变量中需要设置的目录并不是上面这整个路径。而是,能找到这个包的相对路径的根路径。具体如下:

CLASSPATH=.;D:\develop\eclipse\workspace\TestScoping\bin;D:\j2sdk1.4.2_04\lib

当然,如果是使用如eclipse或者IntelliJ IDEA之类的集成开发环境,其中自有关于CLASSPATH,lib等等的设置。可以对于不同的project使用完全不同的配置及不同版本的JDK。再加一句,如果使用JAR文件,那么在CLASSPATH里就不单单要指明路径而且要指明对应的JAR文件名。Bruce Eckel在TIJ里的例子:
So for a JAR named grape.jar your classpath would include:

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


关于访问修饰符,private里有几点要注意的:

第一,如果一个对象(object)有一个private的引用(reference),并不代表别的对象(object)不能拥有一个这个对象的public reference。其实就是要重复提醒自己,Java中除了基本类型外,所有对象及数组的变量名都是一个reference而已。对于reference的修饰只对这个reference有效,与真正的object本身无关。

第二,类不可以是private或者protected。这很容易理解,如果类是private的,那么无法在其之外访问,这个类毫无意义。如果类是protected,就其包访问性来说没什么问题,它是个包内部的辅助类。而对于继承关系来说,protected的父类无法被子类以外的对象访问。那么在抽象性及多态性上就失去了意义。所以,protected类也是没有必要的。(有个特例,inner class可以是private或者protected的)

转载于:https://www.cnblogs.com/sinbadblue/archive/2004/11/29/70733.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值