构造器是一个特殊的方法,这个特殊的方法用来创建实例时执行的,构造器是创建对象的重要途径,因此,java类必须包含一个或者一个以上的构造器。
1.构造器的最大用处就是在创建对象是执行初始化。但这个对象并不是完全有构造器负责创建的。实际上当系统调用构造器之前,系统已经已经创建了一个对象,只是这个对象不能被外部访问,只能在构造器中通过this来引用,当构造器的执行体执行结束后,这个对象作为构造器的返回值被返回。通常还会赋给一个引用变量。
2.构造器的重载,同一个类里面具有多个构造器,多个构造器的参数列表不同。构造器重载允许java类里面包含多个初始化逻辑,从而允许使用不同的构造器来初始化java对象。不同的行参列表之间我们通常通过this来相互调用,这样有利于我们后期代码的优化。
3.调用父类的构造器,子类不会获得父类的构造器,但子类构造器面可以调用父类构造器的初始化代码,类似前面所介绍的一个构造器调用另一个重载构造器。这时super和this的区别就是super调用的是其父类的构造器,而this调用的同一个类中重载的构造器。不管是否使用super调用来执行父类构造器的初始化代码,子类构造器总会调用父类的构造器一次。子类构造器执行体第一行使用super显示调用父类构造器,系统会根据super调用里传入的实参列表调用父类的构造器、子类构造器执行体第一行代码使用this显示调用本类中的重载构造器,系统会根据this调用传入的实参列表调用本类的另一个构造器,执行本类中的另一个构造器事会调用父类的构造器、在子类既没有this调用,也没有super调用,系统将在执行子类构造器之前隐式调用父类的无参数的构造器。