从 Activity 中我将数据传递到:
public FoodAdapter(BaseActivity activity, int ResoruceId, ArrayList <food> cake) {
}
但是这给了我一个错误。为了解决这个问题,我需要 super() ,其中包含 Activity、ResoruceId 和 cake。为什么我需要这个 super() 以及它有什么作用?
谢谢
最佳答案
它初始化您扩展的父类(super class)。您需要这样做,因为父类(super class)必须在构造函数中的任何其他代码运行之前初始化,因为允许子类访问其父类(super class)的状态,并且父类(super class)必须有机会设置该状态状态。一般来说,正如您的类有机会进行初始化(在构造函数中)一样,父类(super class)也需要有机会进行初始化。
如果父类(super class)仅定义带参数的构造函数,则必须显式调用父类(super class)构造函数(使用 super
),并传入这些参数。因此,如果它需要 Activity 和资源 ID,则:
super(activity, ResoruceId); // I would change that second name!
如果父类(super class)定义了一个没有参数的构造函数,并且您没有在构造函数中调用 super(...)
,则 Java 编译器将为您调用无参数版本插入一个(例如,它在构造函数的顶部插入 super();
)。但如果父类(super class)没有定义零参数构造函数,它就无法做到这一点。
我建议阅读 Java 继承的基础知识。甲骨文有an inheritance tutorial ,包括this bit关于使用 super
。
关于java - 为什么我在 Android 中需要 super() ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28658277/