《Java核心技术卷Ⅰ》读书笔记——4.6 对象构造

4.6.1 重载

要完整的描述一个方法,需要指出方法名以及参数类型,这叫做方法的签名(signature)。返回类型不是方法签名的一部分,也就是说,不能有两个名字相同、参数类型也相同却返回不同类型值的方法。

4.6.2 默认域初始化

如果在构造器中没有显示的给域赋予初值,那么就会被自动地赋为默认值:数值为0、布尔为false、对象引用为null。然而,只有缺少程序设计经验的人才会这样做。

4.6.3 无参构造器

如果在编写一个类时没有编写构造器,那么系统会提供一个无参构造器。这个构造器将所有的实例域设置为默认值。

如果类中至少提供了一个构造器,但是没有提供无参数构造器,则在构造对象时如果没有提供参数就会被视为不合法。

4.6.4 显式域初始化

确保不管怎样调用构造器,每个实例域都可以被设置为一个有意义的初值,这是一种很好的设计习惯。

总结两种初始化方法:

4.6.7 初始化块

在一个类的声明中,可以包含多个代码块,只要构造类的对象,这些块就会被执行。例如,

无论哪个构造器构造对象,id域都在初始化块中被初始化。首先运行初始化块,然后才运行构造器的主体部分。(建议将初始化块放在域定义之后)

下面是调用构造器的具体处理步骤:

(1)所有数据域都被初始化为默认值(0、false、null)

(2)按照在类中声明出现的次序,依次执行所有域初始化语句和初始化块

(3)如果构造器第一行调用了第二个构造器,则执行第二个构造器主体

(4)执行这个构造器的主体

可以通过提供一个初始化值,或者使用一个静态的初始化块来对静态域进行初始化。

第一种:private static int nextID = 1;

第二种:将代码放在一个块中,并标记关键字static。下面一个示例,功能是将雇员ID的起始值赋予一个小于10000的随机整数

在类第一次加载的时候,将会进行静态域的初始化(只有第一次时调用)。

4.6.8 对象析构与finalize方法

由于Java有自动的垃圾回收器,不需要人工回收内存,所以不支持析构器。

当然,某些对象使用了内存之外的其他资源,当资源不再用时,将其回收和再利用就显得十分重要。

可以为任何一个类添加finalize方法。finalize方法将在垃圾回收器清除对象前调用。在实际应用中,不要依赖于使用finalize方法回收任何短缺资源,这是因为很难知道这个方法什么时候会被调用。

 

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值