1. 默认构造方法:
默认构造方法是没有参数的构造方法,可以简单的分为两种:
(1) 隐含的默认构造方法
(2) 程序显式定义的构造方法
在java语言中,每个类至少有一个构造方法,为了保证这一点,如果用户定义的类中没有构造方法,那么java语言将自动提供一个隐含的默认构造方法,该构造方法没有参数,用public修饰,没有返回值,并且方法体为空,例如:
public ClassName(){}
当然在程序中也可以明确的定义默认构造方法,
如果在类中定义了一个或者多个构造方法,并且所有的构造方法都有参数,这个类就失去了默认的构造方法。如果想保留默认的构造方法,必须显式的定义出来。例如:
public class Test(){
public Test(String name){System.out.println(name);};
public Test(int age){System.out.println(age);}
} 对于这个类,如果要定义一个对象Test test = new Test();这个就是错误的,因为没有这个构造方法,如果想这样定义,必须显式的定义默认构造方法。
2. 子类调用父类的构造函数
父类的构造函数不能被子类继承,但是在子类对象被创建时,如果不显式调用父类的构造方法,这是子类会调用父类的默认构造方法。如果要调用父类的其他构造方法(带参构造方法),必须出使用super显式的指
使用super必须遵循一下规则:
(1) 在子类的构造方法中不能直接使用父类的构造方法名称直接调用,而必须使用super语句
(2) 如果在子类的构造方法中时用super调用父类的构造方法,他必须作为构造方法的第一条语句出现。
总结
在创建子类的对象时,java虚拟机首先执行父类的构造方法,然后再执行子类的构造方法,在多重继承的情况下,将从最顶层的类的构造方法开始执行,然后依次执行各个类的构造方法。