java中super(),与构造方法链(constructor chaining)

public class Apple extends Fruit {

}

class Fruit{
    public Fruit(String name){
        System.out.println("Fruit's constructor is invoked");
    }
}

这一段代码好像看上去没啥问题吧,编译之后给的错是

由于Apple中没有显式的定义构造方法,所以,Apple的默认构造方法被调用了,因为Apple是Fruit的子类,Apple隐式构造函数第一句将执行super(),于是乎去调用Fruit的构造函数,但是Fruit类没有无参构造函数,调用出错。

posted @ 2018-07-17 12:18  zhangyue_lala  阅读(724)  评论(0编辑  收藏  举报