l 作用:构造方法是用来对对象进行初始化。
l 语法规则:与类名相同;不能声明返回类型,不能被static,final等修饰符修饰,但可以被public等访问权限修饰。
l 构造方法可以重载,并且在构造方法中可以调用成员函数。
l java允许在一个构造方法中用this语句调用另一个构造方法,用super语句调用父类的构造方法;但是this语句和super语句都要放在构造方法的第一句(两者一般不会同时使用)。
l 默认构造方法是指没有参数的构造方法。Java语言规定一个类至少有一个构造方法,如果用户没有提供任何构造方法,那么编译器提供一个隐含的默认构造方法,无参,方法体为空。
l 子类调用父类构造方法的顺序:
在创建子类的对象时,JVM首先执行父类的构造方法,然后再执行子类的构造方法,在多层继承下,首先从继承树的最上层开始执行。
如果子类没有用super语句调用父类的构造方法,通过构造方法创建子类对象时,JVM会自动先调用父类默认构造方法。如果出现父类没有提供默认构造方法(父类定义了带参的构造方法但没有定义默认构造方法),那么编译报错。
class Base{ Base(int i){ System.out.println("call Base(int i)"); } } public class Sub extends Base{ Sub(){ this(0); System.out.println("call Sub()"); } Sub(int i){ super(i); System.out.println("call Sub(int i)"); } public static void main(String[] args){ Sub sub = new Sub(); } }
|
打印输出:
call Base(int i)
call Sub(int i)
call Sub()