Thinking in Java第五章阅读小结

  
第五章 隐藏具体实现
5.1 包:程序库单元
   1 .创建一个独一无二的包名:
一个包从未真正将被打包的东西包装成单一的文件,一个包可以由许多.class文件构成,这些文件都置于一个目录下。为了包名的独一无二性,使用反顺序的Internet域名作为包名。把package名称分解为你机器上的一个目录,当Java程序运行并且需要加载.class文件时,Java解释器的运行过程如下:
(1)首先找出环境变量CLASSPATH,用作查找.class文件的根目录。
(2)解释器获取包名,并将包名中的每个句点替换成反斜杠,从而产生一个路径名。
(3)将第二步得到的路径与第一步CLASSPATH中的各个不同的项相连接,解释器就在这些目录中查询你所要创建的类名称相关的.class文件
冲突:如果同时倒入的两个程序库中有两个重名的类,这是存在潜在的冲突,解决冲突的办法是在程序中使用到类的同时明确指出调用的是哪个包中的类。
 
  2 .定制工具库
      有了包的概念,我们可以定制自己的工具库,这样可以减少或消除代码的重复性。
      只要你实现了某个新的有用的工具,就可以把它添加到自己的工具库目录下
 
   3 .用import 改变行为:利用import修改被导入的package可以实现C语言中条件编译的某些功能。
 
5.2 Java 访问权限修饰词:
   1 .各类访问权限:
包访问权限:没有任何关键字,有时也表示成friendly。表示同一个包中的所有其他类对这个成员都有访问权限,但对于这个包之外的所有类,不可以访问该成员。
                 一个编译单元(即一个文件),只能隶属于一个包,所以经由包访问权限,处于同一个编译单元中的所与类彼此之间都是自动可以访问的。
public:对每个人都可用
      private:除了包含该成员的类之外,其他任何类都无法访问这个成员。
      protected:继承访问权限。把权限赋给派生类的同时也提供包访问权限。
               如果创建了一个新包,并自另一个包中继承类,那么唯一可以访问的成员就是源包中的public成员和protected成员。如果在同一个包内执行继承工作,除了public和protected,还可以操纵所有拥有包访问权限的成员。
 
   2 .缺省包的概念:如果两个文件同处于相同的目录并且没有给自己设定任何的包名称Java将这样的文件自动看作是隶属于该目录的缺省包中,于是,他们为该目录中所有其他文件都提供了包访问权限。
 
   3 .取得对某个成员的访问权的途径是:
      (1)使该成员为public。于是,无论是谁,无论在哪里,都一个访问该成员。
      (2)通过不加访问权限修饰词并将其他类放置于同一个包内的方式给成员赋予包访问权限。于是,包内的其他类也就可以访问该成员了
      (3)由继承而来的类,即可以访问public成员,也可以访问protected成员,但不可以访问private成员,只有当两个类处于同一个包内时,它才可以访问具有包访问权限的成员。
      (4)提供访问器(accessor)和变异器 (mutator)方法(也称作”get/set”方法),以读取和改变数值。这是OOP最优雅的方式。
 
5.3 接口和实现:将接口和具体实现进行分离
 
5.4 类的访问权限:
对于所有类的访问权限,只有两个选择:包访问权限(缺省)或public。
包访问权限:该类对象可以由包内的任何其他类来创建,但在包外是不可以的。(一定要记住,相同目录下的所有不具有明确package声明的文件,都被视作市该目录下缺省包的一部分)
public:任何人都可以创建该类对象。
如果不希望其他任何人对该类拥有访问权限,可以把所有的构造器都制定为private,从而阻止任何人创建该类的对象,但是有一个例外,就是在该类的static成员内部人可以创建,只要在静态方法内部调用构造器,然后返回新创建的对象引用就可以了,该对象在类外可以使用。
 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值