深入构造器

javafk 2012-04-20 03:48:51
深入构造器

构造器是一个特殊的方法,这个特殊方法用于创建类的实例。Java语言里构造器是创建对象的重要途径(即使使用工厂模式、反射等方式创建对象,其实质依然是依赖于构造器),因此,Java类必须包含一个或一个以上的构造器。

使用构造器执行初始化

构造器最大的用处就是在创建对象时执行初始化。前面已经介绍过了,当创建一个对象时,系统为这个对象的属性进行默认初始化,这种默认初始化把所有基本类型的属性设为0(对数值型属性)或false(对布尔型属性),把所有引用类型的属性设置为null.

如果我们想改变这种默认的初始化,想让系统创建对象时就为该对象各属性显式指定初始值,就可以通过构造器来实现。

注意:如果程序员没有为Java类提供任何构造器,则系统会为这个类提供一个无参数的构造器,这个构造器的执行体为空,不做任何事情。无论如何,Java类至少包含一个构造器。

一旦程序员提供了自定义的构造器,则系统不再提供默认的构造器。

如果用户希望类保留无参数的构造器,或者希望有多个初始化过程,则可以为类提供多个构造器。如果一个类里提供了多个构造器,就形成了构造器的重载。

提示:通常建议为Java类保留无参数的默认构造器。因此,如果为一个类编写了有参数的构造器,通常建议为该类额外编写一个无参数的构造器。

因为构造器主要用于被其他方法来调用,用以返回该类的实例,因而通常把构造器设置成public访问权限,从而允许系统中任何位置的类来创建该类的对象。除非在一些极端的情况下,我们需要限制创建该类的对象,可以把构造器设置成其他访问权限:例如设置为protected,主要用于被其子类来调用,把其设置为private阻止其他类创建该类的实例。

构造器的重载

同一个类里具有多个构造器,多个构造器的形参列表不同,即被称为构造器重载。构造器重载允许Java类里包含多个初始化逻辑,从而允许使用不同的构造器来初始化Java对象。

构造器重载和方法重载基本相似:要求构造器的名字相同,这一点无须特别要求,因为构造器必须与类名相同,所以同一个类的所有构造器名肯定相同。为了让系统能区分不同的构造器,多个构造器的参数列表必须不同。

如果系统中包含了多个构造器,其中一个构造器执行体里完全包含另一个构造器的执行体。

...全文
93 回复 打赏 收藏 转发到动态 举报
写回复
用AI写文章
回复
切换为时间正序
请发表友善的回复…
发表回复
《jquery技术内幕:深入解析jquery架构设计与实现原理》由阿里巴巴资深前端开发工程师撰写,从源代码角度全面而系统地解读了jquery的17个模块的架构设计理念和内部实现原理,旨在帮助读者参透jquery中的实现技巧和技术精髓,同时本书也对广大开发者如何通过阅读源代码来提升编码能力和软件架构能力提供了指导。   《jquery技术内幕:深入解析jquery架构设计与实现原理》首先通过“总体架构”梳理了各个模块的分类、功能和依赖关系,让大家对jquery的工作原理有大致的印象;进而通过“构造jquery对象”章节分析了构造函数jquery()的各种用法和内部构造过程;接着详细分析了底层支持模块的源码实现,包括:选择器sizzle、异步队列deferred、数据缓存data、队列queue、浏览器功能测试support;最后详细分析了功能模块的源码实现,包括:属性操作attributes、事件系统events、dom遍历traversing、dom操作manipulation、样式操作css、异步请求ajax、动画effects。   《jquery技术内幕:深入解析jquery架构设计与实现原理》在分析每个模块时均采用由浅入深的方式,先概述功能、用法、结构和实现原理,然后介绍关键步骤和分析源码实现。让读者不仅知其然,而且知其所以然。事实上,本书的根本价值在于传达一种通过阅读源码快速成长的方式。无论是前端新人,还是经验丰富的老手,只要是对javascript感兴趣的开发人员,都会从本书中受益。

23,407

社区成员

发帖
与我相关
我的任务
社区描述
Java 非技术区
社区管理员
  • 非技术区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧