从我将数据传递到的活动:
public FoodAdapter(BaseActivity activity, int ResoruceId, ArrayList <food> cake) {
}
然而,这给了我一个错误。为了解决这个问题,我需要带有活动的super(),ResoruceId和其中的蛋糕。为什么我需要这个super()以及它做了什么?
由于
答案 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
。