当您super()
从子类的构造函数调用时,它应该在父级没有arg构造函数时抛出编译时异常.但是由于Object类有一个没有arg的构造函数,实际上会抛出这个异常吗?
首先,它不是例外:它是编译时错误.那是一个不同的野兽.
规则说如果你调用super()
(没有参数)那么父类应该有一个无参数的构造函数.父母在这里意味着:直接父母,而不是祖父母或祖父母.那是因为构造函数不是继承的.
因此,尽管该类Object
始终是任何其他类的祖先,但它具有不带参数的构造函数,但这并没有什么区别,因为来自Object的构造函数只能访问其直接子类; 它们不能被子类(孙子)的子类访问.