对于不返回某些内容的方法,是否使用void强制执行?

时间:2017-01-17 10:34:22

标签: java android database function methods

我在某处看到了这段代码:

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呢?

4 个答案:

答案 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对象,其中包含nameage参数。

答案 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();

如果您想了解更多信息,请参阅其他答案中的链接。