Java之构造器

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

使用构造器执行初始化

构造器最大的用处就是在创建对象时执行初始化。当创建一个对象时,系统为这个对象的实例变量进行默认初始化,这种默认的初始化把所有基本类型的变量设为0,把所有引用类型的实例变量设为null.

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

构造器主要用于被其他方法调用,用以返回该类的实例,因而通常把构造器设置成public访问权限,从而允许系统中任何位置的类来创建该类的对象。

构造器重载

同一个类里具有多个构造器,多个构造器参数列表不同,即被称为构造器重载。多个构造器的名字相同,但形参列表不同。系统通过new调用构造器时,系统将根据传入的实参列表来决定调用哪个构造器。

如果系统中包含了多个构造器,其中一个构造器包含了另一个构造器的执行体,如何做到代码复用呢?
假设构造器B完全包含了构造器A。如果是两个方法之间存在这种关系,则可在方法B中调用方法A。但构造器补不能直接被调用,构造器必须使用new关键字来调用。但一旦使用new关键字来调用构造器,将会导致系统重新创建一个对象。此时可以通过this关键字调用相应的构造器。

public class Test {     public String name;     public String color;     public double weight;     public Test() {}     public Test(String name, String color) {         this.name = name;         this.color = color;     }     public Test(String name, String color, double weight) {         this(name, color);         this.weight = weight;     }      public static void main(String[] args) {         Test mytest  = new Test("apple", "red", 12.5);         System.out.println(mytest.name);  //apple         System.out.println(mytest.color);  //red         System.out.println(mytest.weight);  //12.5     }  }

使用this调用另一个重载的构造器只能在构造器中使用,而且必须作为构造器执行体的第一条语句。

脚本宝典为你提供优质服务
脚本宝典 » Java之构造器

发表评论

提供最优质的资源集合

立即查看 了解详情