编译来自子构造函数的super()调用的时间异常

Pra*_*san 0 java exception

当您super()从子类的构造函数调用时,它应该在父级没有arg构造函数时抛出编译时异常.但是由于Object类有一个没有arg的构造函数,实际上会抛出这个异常吗?

Erw*_*idt 5

首先,它不是例外:它是编译时错误.那是一个不同的野兽.

规则说如果你调用super()(没有参数)那么类应该有一个无参数的构造函数.父母在这里意味着:直接父母,而不是祖父母或祖父母.那是因为构造函数不是继承的.

因此,尽管该类Object始终是任何其他类的祖先,但它具有不带参数的构造函数,但这并没有什么区别,因为来自Object的构造函数只能访问其直接子类; 它们不能被子类(孙子)的子类访问.