【构造方法也是方法】构造方法也是方法,因此在类的初始化时,也是在方法级别的初始化顺序中被初始化的。构造方法具有以下8个特点:
① 构造方法必须与类的名字相同,并且不能有返回值(返回值也不能为void)。
② 每个类可以有多个构造方法,即构造方法可以被重载。当开发人员并没有提供构造方法时,编译器在把源代码编译成字节码的过程中会提供一个无参构造方法,但是该构造方法不会执行任何代码。
③ 构造方法可以有0个、1个或1个以上的参数。
④ 构造方法总是伴随着new操作一起调用,且不能由程序的编写者直接调用,必须要由系统调用。构造方法在对象实例化时会被自动调用,且只运行一次。普通的方法是在程序执行到它时才被调用,且可以被对象调用多次。
⑤ 构造方法的主要作用是完成对象的初始化工作。
⑥ 构造方法不能被继承,因此它也不能被重写(覆盖),但是构造方法可以被重载,可以使用不同的参数个数或参数类型来顶底多个构造方法。
⑦ (1)子类可以通过super关键字来显示地调用父类的构造方法,此时调用父类构造方法的语句必须为构造函数中的第一条语句。(2)当父类没有提供无参数的构造方法时,子类的构造方法必须显示地调用父类的构造方法。(3)如果父类提供了无参构造方法,此时子类的构造方法就可以不显式地调用父类的构造方法。在这种情况下,编译器会默认调用父类提供的无参构造方法。(4)当有父类时,在实例化对象时会先执行父类的构造方法,然后执行子类的构造方法。
⑧ 当父类和子类都没有定义构造方法时,编译器会为父类生成一个默认的无参构造方法,给子类也生成一个默认的无参构造方法。此外,默认无参构造方法的修饰符只跟当前类的修饰符有关。
【注意】对于构造方法来说,没有对访问修饰符有明确的限定,即可以用public(最常用)、protected、default(什么都不写时,默认)和private(常用于单例模式)来修饰。但是static (静态) 、final(最终)、 abstract(抽象) 、synchronized(同步) 这些都不能够放在构造函数前使用,及构造方法不能被特殊修饰符修饰。
【注意】普通方法也是可以与构造方法具有相同的方法名的。