android
编程,并设法让自己在超类声明上有点迷惑
以下代码实现了SQLiteOpenHelper
类。现在,就我而言,这是超级班。是否发送变量以满足超类而不是继承它?
显然,我总是认为超类引用了超类变量以在另一个类中使用。
代码:
private static class DBHelper extends SQLiteOpenHelper
{
public DBHelper(Context context) {
super(context, KEY_NAME, null, DATABASE_VERSION);
}
答案 0 :(得分:1)
当我读到你的问题时 - 它不是很清楚 - 你不明白这是什么:
super(context, KEY_NAME, null, DATABASE_VERSION);
的装置。
嗯,这是调用超类'构造函数的唯一方法。大多数情况下,所讨论的超类都有一个没有参数的构造函数,因此可以省略对超类构造函数的调用。但是如果它没有这样的构造函数,或者你想调用另一个需要一些参数的构造函数,你需要使用它。注意:对super()
的调用应该始终是构造函数中的第一个语句,因为否则在调用构造函数时,超类将不存在,这可能导致非常讨厌,非常不可预测的行为。 (并且Java工程师也知道这一点,所以调用super()
太晚或者在不允许的情况下省略它会导致编译时错误。)
答案 1 :(得分:0)
您正在扩展SQLiteOpenHelper
,而不是像实现接口那样实现它。调用super(...)
,你确实将参数传递给超级构造函数。
答案 2 :(得分:0)
DBHelper是子类,SQLiteOpenHelper是超类。 DBHelper在创建实例时调用超级构造函数。为此,使用了SQLiteOpenHelper的构造函数,它需要一些参数来初始化超类中的变量。
答案 3 :(得分:0)
根据您的代码声明,SQLiteOpenHelper的构造函数应该有四个参数,否则编译时错误。
当然,如果在父母和母语中有相同的变量超类的子类和对象引用然后该对象将仅引用超类varibales。
希望现在你的怀疑是明确的!!!
答案 4 :(得分:0)
super(context,KEY_NAME,null,DATABASE_VERSION)表示发送的变量将用于SQLiteOpenHelper的构造函数。如果您要扩展该类,则可能需要这些变量才能正确创建它。
在你自己的扩展类中,构造函数或方法是你自己做的事情,但你似乎知道:P