构造方法又叫构造函数,也可叫构造器。
含义:每一个类都有构造方法,构造方法与该类类名相同,没有返回值(只要调用构造函数就必须出现在new后面,如果不用new,在eclipse里面会报出没有定义这个方法的错误)。
作用:用来构建和初始化该类的对象。
调用时间:在实例化该类的时候被调用(即创建对象/new出一个实例的时候),一般在静态块,非静态块之后调用。
是否必须写:不一定非要写,有需要的时候才写,如果不写系统会默认的加一个隐式的无参构造方法,在实例化该对象的时候被调用。
无参vs 有参:无参构造方法不写的时候系统默认加的叫隐式构造方法,自己写出来是显示无参构造方法。有参的必须是要写出来的,有参构造函数根据参数类型、个数的不同可以写多个。
调用无参构造器构建的对象只有该类的属性,比如构建一个“Person” 这个对象,只能说这个对象有 eyes mouth age 等属性,调用有参构造器构建的对象,可以在构建对象的时候对某些属性赋予特定的值,比如调用有参构造的对象,除了有以上属性外,还可以知道age具体是多大、eyes是单眼皮等属性的具体信息。
子类一定要调用父类的构造方法吗?
一定,我的理解是必须有了父亲才会有儿子,所以是儿子实例化,也必须先创建父亲,否则儿子没发诞生,而创建父亲必须调用父类的构造方法完成,所以一定要调用父类的构造方法。
任何子类构造方法第一行肯定是this();或者super();两个择一,不能同时都有。
this();调用本类的其它构造方法。(传递相应参数调用相应的方法),注:假设调用了另一个构造方法,假设叫法1,因为那个构造方法要先调用父类的,所以这时候也是先调父类的法1,再调自己的法1,然后才执行自己的这个构造方法(不会再调父类的这个构造方法了,因为this和super只能出现一个)
super();调用父类的构造方法。
例:
public classFather
{
public Father(){
System.out.println("父亲的无参构造方法~~");
}
public Father(String name){
System.out.println("父亲的有参构造方法~~");
}
public Father(String name,int age){
System.out.println("父亲的有参构造方法~~");
}
}
package gouZaoMethods;
public classSon extendsFather
{