构造器问题汇总

1.一个类中若没有任何构造器,则编译的时候回默认生成一个无参构造器;

2.若父类中已经有有参构造方法,那么子类中也必须存在有参构造方法,且必须通过super关键字调用父类有参构造器;

3.若父类中同时存在有参和无参构造器,那么子类中的有参构造器会默认执行父类无参构造方法,参考代码如下:

public class ConstructorTest {
    String name;
    //给父类一个有参构造器
    public ConstructorTest(){
        System.out.println("1");
    }
    public  ConstructorTest(String name){
        System.out.println("2");
        this.name = name;
    }
}
class Test extends  ConstructorTest{
    ConstructorTest constructorTest;
    /**
     * 子类也有一个有参构造器
     * 运行结果为:1,3,2
     */
    public Test(String name){
        //此构造器会先执行ConstructorTest类中的无参构造方法
        System.out.println("3");
        this.name = name;
        constructorTest = new ConstructorTest(name);
    }
    public Test(){
        System.out.println(4);
    }
}

猜你喜欢

转载自www.cnblogs.com/smallVampire/p/12390107.html
今日推荐