第六章,类再生

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的值了。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值