java 子类继承父类,构造函数问题

如图,子类 student 第一个构造函数 里面没有 调用super(参数列表),并且 父类里面没有 无参数的构造函数,然后 这个构造函数里面 又有一个 两个参数的构造函数,请问为啥 调用这个构造函数 不会报错。理论上说 应该是 先调用 super();在执行 下面的 函数!而 父类没有无参函数应该会 报错啊,求大神解释

student第一个构造函数Student(String name, String school)不是调用了另一个3个参数的构造函数么,那个函数里有调用父类构造函数,所以没问题,构造顺序是这样的:

Student(name, school)
  Student(name, school, "beijing")
    Person(n, l)
    this.school = school

如果把第一个构造函数中的 this(name, school, "beijing") 注释掉,就会看到编译错误了。

父类构造函数是一定要调用的,这个概念不用怀疑。只是调用同级其他构造函数优先于父类构造函数。

温馨提示:内容为网友见解,仅供参考
第1个回答  2013-06-09
你是不是理解错了,你说的super的作用是调用父类的构造函数,但是并不是必须的,子类完全可以完全实现自己的构造,调用super一般是为了在父类功能的基础上扩展一下而已。
第2个回答  2013-06-09
有人已经回答了。super不一定说必须要调用。如果你有这个需求你可以调用没需求你可以不用super调用了至于创建子类的对象是默认的会调用父类的无参的构造方法的。说白了你在子类中不用super调用父类的构造放法并且创建子类的对象是不会报错的。主要是默认情况下会自动调用父类的构造方法的。你写段代码测试下就知道了。
第3个回答  2013-06-09
默认(无参构造器)是在类里面没有有参构造器被添加的,就相当于一个类的缺省构造器。举个例子如:
class A{

}此时相当于
class A{
A(){}
}

而当
class A{
A(int a){}
}
最终效果还是一样,默认构造器不存在了,就相当于给我默认值
class A{
A(int a){}
}
第4个回答  2013-06-09
父类没有两个参数的构造方法,自然就不会有super()的调用
相似回答