为什么我需要Android中的super()?

时间:2015-02-22 13:22:19

标签: java android

从我将数据传递到的活动:

public FoodAdapter(BaseActivity activity, int ResoruceId, ArrayList <food> cake) {


}

然而,这给了我一个错误。为了解决这个问题,我需要带有活动的super(),ResoruceId和其中的蛋糕。为什么我需要这个super()以及它做了什么?

由于

1 个答案:

答案 0 :(得分:3)

它初始化你已经扩展的超类。您需要这样做,因为超类必须在构造函数运行中的任何其他代码之前初始化,因为允许子类访问其超类的状态,并且超类必须有机会建立那个州。通常,正如您的类有机会进行初始化(在构造函数中),超类也需要有机会进行初始化。

如果超类只定义带有参数的构造函数,则必须显式调用超类构造函数(使用super),并传入这些参数。因此,如果它需要活动和资源ID,那么:

super(activity, ResoruceId); // I would change that second name!

如果超类定义了一个带有 no 参数的构造函数,并且你没有在构造函数中调用super(...),那么Java编译器将为你调用一个no-args版本(例如,它在构造函数的顶部插入super();)。但如果超类没有定义零参数构造函数,它就无法做到这一点。

我建议阅读Java中的继承基础知识。 Oracle有an inheritance tutorial,包括this bit关于使用super