我在某处看到了这段代码:
public class MyDatabaseHelper extends SQLiteOpenHelper {
private static final String DATABASE_NAME = "DBName";
private static final int DATABASE_VERSION = 2;
// Database creation sql statement
private static final String DATABASE_CREATE = "create table MyEmployees
( _id integer primary key,name text not null);";
public MyDatabaseHelper(Context context) {
super(context, DATABASE_NAME, null, DATABASE_VERSION);
}
// Method is called during creation of the database
@Override
public void onCreate(SQLiteDatabase database) {
database.execSQL(DATABASE_CREATE);
}
// Method is called during an upgrade of the database,
@Override
public void onUpgrade(SQLiteDatabase database,int oldVersion,int newVersion){
Log.w(MyDatabaseHelper.class.getName(),
"Upgrading database from version " + oldVersion + " to "
+ newVersion + ", which will destroy all old data");
database.execSQL("DROP TABLE IF EXISTS MyEmployees");
onCreate(database);
}
}
如您所见,MyDatabaseHelper
方法没有返回(不返回任何内容)。那么为什么作者没有使用void
呢?
答案 0 :(得分:1)
因为那是一个类构造函数!
“当创建对象时,Java首先调用构造函数。然后,构造函数中的任何代码都将被执行。您不需要对构造函数方法进行任何特殊调用 - 它们会在您创建时自动发生新对象。构造方法与类具有相同的名称。“
“如果你的方法覆盖了它的一个超类方法(在本例中是SQLiteOpenHelper),你可以通过使用关键字super(在这种情况下是它自己的构造函数)来调用重写方法。考虑这个类,超类:”< / p>
答案 1 :(得分:1)
它被称为构造函数,它用于在创建时初始化对象(在这种情况下,您希望使用Context
初始化数据库帮助程序)。见https://docs.oracle.com/javase/tutorial/java/javaOO/constructors.html
帮助您理解构造函数的更好示例:
public class Person {
public String name;
public int age;
public Person(String name, int age) {
this.name = name;
this.age = age;
}
@Override
public String toString() {
return String.format("My name is %s and I am %d years old", name, age);
}
}
public class Main {
public static void main(String[] args) {
Person me = new Person("Niels", 20);
System.out.println(me);
}
}
执行上述代码时,您会在控制台中看到My name is Niels and I am 20 years old
。
正如您所看到的,我们创建了一个Person
对象,其中包含name
和age
参数。
答案 2 :(得分:1)
因为它是一个类构造函数!
只有类'构造函数是一个没有任何返回类型的方法。休息所有方法都应该有它们的返回类型。
注意:可能有多个构造函数(默认&amp;构造函数具有不同的参数)。
答案 3 :(得分:1)
该方法称为构造函数。它与它所在的类具有相同的名称,并在通过调用new
实例化类时调用。它实际上并没有返回无效;它返回它实例化的类的实例。
班级:
public class MyClass {
public MyClass() {
// do something, notice the constructor has the name of the class
}
}
使用课程:
MyClass theInstance = new MyClass();
如果您想了解更多信息,请参阅其他答案中的链接。