疯狂java


您现在的位置: 疯狂软件 >> 新闻资讯 >> 正文

深入构造器—[疯狂java讲义]


 

深入构造器
 
         在前面的我讲了如何定义构造器,或许有的人还不明白怎么使用构造器,这里我来讲解一下。
 
         构造器是一个特殊的方法,这个特殊方法用于创建类的实例。Java语言里构造器是创建对象的重要途径(即使使用工厂模式、反射等方式创建对象,其实质依然是依赖于构造器),因此,Java类必须包含一个或一个以上的构造器。
 
使用构造器执行初始化
 
         构造器最大的用处就是在创建对象时执行初始化。前面已经介绍过了,当创建一个对象时,系统为这个对象的属性进行默认初始化,这种默认初始化把所有基本类型的属性设为0(对数值型属性)或false(对布尔型属性),把所有引用类型的属性设置为null.
如果我们想改变这种默认的初始化,想让系统创建对象时就为该对象各属性显式指定初始值,就可以通过构造器来实现。
 
        注意:如果程序员没有为Java类提供任何构造器,则系统会为这个类提供一个无参数的构造器,这个构造器的执行体为空,不做任何事情。无论如何,Java类至少包含一个构造器。
 
         一旦程序员提供了自定义的构造器,则系统不再提供默认的构造器。
 
         如果用户希望类保留无参数的构造器,或者希望有多个初始化过程,则可以为类提供多个构造器。如果一个类里提供了多个构造器,就形成了构造器的重载。
 
         提示:通常建议为Java类保留无参数的默认构造器。因此,如果为一个类编写了有参数的构造器,通常建议为该类额外编写一个无参数的构造器。
 
         因为构造器主要用于被其他方法来调用,用以返回该类的实例,因而通常把构造器设置成public访问权限,从而允许系统中任何位置的类来创建该类的对象。除非在一些极端的情况下,我们需要限制创建该类的对象,可以把构造器设置成其他访问权限:例如设置为protected,主要用于被其子类来调用,把其设置为private阻止其他类创建该类的实例。
 
构造器的重载
 
         同一个类里具有多个构造器,多个构造器的形参列表不同,即被称为构造器重载。构造器重载允许Java类里包含多个初始化逻辑,从而允许使用不同的构造器来初始化Java对象。
 
        构造器重载和方法重载基本相似:要求构造器的名字相同,这一点无须特别要求,因为构造器必须与类名相同,所以同一个类的所有构造器名肯定相同。为了让系统能区分不同的构造器,多个构造器的参数列表必须不同。
 
        如果系统中包含了多个构造器,其中一个构造器执行体里完全包含另一个构造器的执行体。(摘自[疯狂java讲义])