在Java中是否必须调用基类构造函数?在C++中是可选的,所以我想问一下。
当我扩展ArrayAdapter
时,我遇到了这个错误:"Implicit super constructor ArrayAdapter<String>() is undefined. Must explicitly invoke another constructor"
那么,调用基类构造函数的目的是什么?当创建对象时,首先调用基类构造函数,然后再调用派生类构造函数对吗?
在Java中是否必须调用基类构造函数?在C++中是可选的,所以我想问一下。
当我扩展ArrayAdapter
时,我遇到了这个错误:"Implicit super constructor ArrayAdapter<String>() is undefined. Must explicitly invoke another constructor"
那么,调用基类构造函数的目的是什么?当创建对象时,首先调用基类构造函数,然后再调用派生类构造函数对吗?
如果您不自己调用无参构造函数,则会隐式调用它,但是如果该构造函数不存在,则无效。需要调用超类构造函数的原因是,超类通常有一些状态期望在构造后处于特定状态,这可能包括不能在子类中设置的私有变量。如果不调用构造函数,它将使对象处于可能无效的状态,这可能会导致各种问题。
不必调用超类的无参构造函数。如果你想调用一个带参数的构造函数,使用super关键字,如下所示:
super(arg1, ...);
this(...)
开头。 - user207421