在Java中调用基类构造函数是否必须? 在C ++中它是可选的,所以我问这个。
当我延长ArrayAdapter
时,我收到此错误:"Implicit super constructor ArrayAdapter<String>() is undefined. Must explicitly invoke another constructor"
那么,调用基础构造函数的目的是什么?当我创建对象基类时,构造函数会调用&amp;那就是派生的权利。
答案 0 :(得分:10)
如果你不自己调用no-args构造函数,则会隐式调用no-args构造函数,如果该构造函数不存在则无效。需要调用超级构造函数的原因是超类通常具有一些它在构造后期望处于的状态,这可能包括无法在子类中设置的私有变量。如果不调用构造函数,它会使对象处于可能无效的状态,这可能会导致各种问题。
答案 1 :(得分:0)
没有必要调用超类的no-args构造函数。如果你想用args调用构造函数,用户超级关键字如下所示:
super(arg1, ...);