gpt4 book ai didi

java - 调用构造函数并初始化数据库名称

转载 作者:行者123 更新时间:2023-11-29 22:53:22 25 4
gpt4 key购买 nike

我不明白下面的代码 fragment 是如何工作的:

public class GroceryDBHelper extends SQLiteOpenHelper {

public static final String DATABASE_NAME = "grocerylist.db";
public static final int DATABASE_VERSION = 1;

public GroceryDBHelper(Context context) {
super(context, DATABASE_NAME, null, DATABASE_VERSION);
}
}

即:首先,继承自SQLiteOpenHelper类应该调用构造函数,与本类的构造函数相同。在这种情况下,构造函数只接受上下文变量。但仍然可以正常工作。

其次:我的类继承自 SQLiteOpenHelper 类。在SQLiteOpenHelper类中,成员变量是私有(private)的,所以不被我的类继承。所以我没有负责数据库名称的成员变量。另外我之前给出的构造函数没有初始化数据库名称,但是当我使用方法 dbHelper.getDatabaseName();我实际上得到了正确的数据库名称。这是怎么回事?

最佳答案

这一行:super(context, DATABASE_NAME, null, DATABASE_VERSION); 正在调用父类 SQLiteOpenHelper 的构造函数。

您的类 DATABASE_NAMEDATABASE_VERSION 中有两个常量,它们被传递给父构造函数,这意味着 GroceryDBHelper 构造函数不需要它们.构造函数不需要这些变量,因为无论在何处实例化此类,它们都将保持不变。

当您通过 super() 调用将这些变量传递给 SQLiteOpenHelper 时,SQLiteOpenHelper 正在设置私有(private)成员,这就是为什么 dbHelper.getDatabaseName(); 正在返回正确的结果。

关于java - 调用构造函数并初始化数据库名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57683804/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com