在我看过的很多例子中,AsyncTask
被扩展,构造函数被覆盖,而super()没有被调用。例如,在this answer by hackbod:
static class Worker extends AsyncTask<URL, Integer, Long> {
MyActivity mActivity;
Worker(MyActivity activity) {
mActivity = activity;
}
[...]
}
新的构造函数不会回调父的构造函数。
CommonsWare在this sample project中有类似的代码。
这是正确的吗?或者应该super()
真的被召唤?
答案 0 :(得分:18)
如果未明确调用super(),则会隐式调用默认的超级构造函数。所以根本没有什么区别。我会使用较短的版本(省略super()),这似乎是Java中的常见做法。
P.S。另请参见此主题:Default constructors and inheritance in Java