您不必为您的类提供任何构造函数,但在执行此操作时必须小心.编译器自动为没有构造函数的任何类提供无参数的默认构造函数. 此默认构造函数将调用超类的无参数构造函数.在这种情况下,如果超类没有无参数构造函数,编译器将会抱怨,因此您必须验证它是否存在.如果你的类没有显式的超类,那么它有一个隐式的超类Object,它有一个无参数的构造函数.
如果你有一个没有显式默认构造函数的超类A,
并且子类B 扩展了没有显式默认构造函数的A,
在驱动程序类的main方法中你
A obj1 = new A();
会创建一个默认构造函数,
它将调用Object类的默认构造函数,对吗?
但是如果
B obj2 = new B();
按照教程进行操作,将生成B的默认构造函数,
构造函数将调用超类的无参数构造函数,而超类
将依次调用Object中的构造函数.
那么什么时候超类没有无参数构造函数呢?