第六章,类再生

来源:互联网 发布:淘宝联盟是谁返的钱 编辑:程序博客网 时间:2024/04/29 00:04

6.0.1 初始化基础类:

         初始化知识点1:通过此类的Art,Drawing,Cartoon三个程序例子的示范,可以看出,构建是在基础类的“外部”进行的,所以基础类会在衍生类访问它之前得到正确的初始化。即使没有为Cartoon()创建一个构建器,编译器也会为我们自动合成一个默认构建器,并发出对基础类构建器的调用.但是注意这里自动调用的是默认构造器,如果构造器里面带上自定义参数,就不能使用此方法,如果没有默认构造器,就必须使用super(xx)来显示调用基础类构造器.

 

6.8.1 final数据

         许多程序设计语言都有自己的办法告诉编译器某个数据时“常数”。常数主要应用于下述两个方面:

         ⑴.编译期常数,它永远不会改变。

         ⑵.在运行期初始化的一个值,我们不希望它发生变化。

         对于编译器的常数,编译器(程序)可将常数“封装”到需要的计算过程里。也就是说,计算可在编译器间提前执行,从而节省运行时的一些开销。在Java中,这些形式的常数必须属于基本数据类型(Primitives),而且要用final关键字进行表达。在对这样的一个常数进行定义的时候,必须给出一个值。

         无论static还是final字段,都只能存储一个数据,而且不得改变。

         若随同对象句柄使用final,而不是基本数据类型,它的涵义就稍微让人有点儿迷糊了。对于基本数据类型,final会将值变成一个常数;但对于对象句柄,final会将句柄变成一个常数。进行声明时,必须救将句柄初始化到一个具体的对象。而且永远不能将句柄变成指向另一个对象。然而,对象本身是可以修改的。Java对此未提供任何手段,可将一个对象直接变成一个常数(但是,我们可自己编写一个类,使其中的对象具有“常数”效果)。这一限制也适用于数组,它也属于对象。

 

        fnail方法主要有两点作用:(1)防止继承类修改方法,(2)提高效率,前提是方法代码量较少。还有类中的private方法由于不能被访问,会被编译器自动加上final关键字,当然如果也可以主动加final,但是无任何额外意义.

 

final类,不允许被继承.

        结论:final的字段或值只能被一次赋值,定义的时候,可以定义空的final,但是使用之前必须先赋值,一次赋值后,不能再更改final的值了。

原创粉丝点击