构造方法的作用:创建对象并初始化对象
定义规则:构造方法名与类名相同且没有返回值。(构造方法不需要设置返回值类型,包括void)
在没有定义构造方法是,编译器会自动为类添加形如 类名 () {} 的构造方法
继承类(子类)的构造方法
子类的构造方法中必须调用其父类的构造方法(显示的调用或者默认调用无参的父类构造方法)
如果子类的构造方法中没有显示的调用父类的构造方法,则系统会默认调用父类的无参数构造方法
如果子类的构造方法中没有显示的调用父类的构造方法,而父类中又没有无参的构造方法,则编译出错
子类的构造方法可以使用 super(argument_list) 来显示的调用父类的构造方法,且必须写在子类构造方法的第一行
可以使用this(argument_list) 来调用本类其他的构造方法
加深理解
1.如果子类和父类都没有定义构造方法,则编译器会为父类和子类都自动添加 类名() {} 的无参构造方法
而子类创建对象时,就是使用编译器为子类自动添加的构造方法,子类的构造方法会自动调用编译器为父类自动添加的无参构造方法
2.如果父类中定义了一个有参的构造方法,则编译器不会为父类自动添加无参的构造方法
如果子类没有定义构造方法,或者子类中定义了构造方法,但没有显示的调用父类的构造方法,则会编译出错。
因为此使子类需要默认调用父类的无参构造方法,而父类中却没有无参的构造方法,所以编译出错