1

这段代码中有构造函数吗?这段代码的哪一部分是构造函数?

class Bicycle {
    int cadance = 0;
    int speed = 0;
    int gear = 0;

    void changeCadance(int changeCadence) {
        cadance = changeCadence;
    }

    void changeGear(int changeGear) {
        gear = changeGear;
    }

    void changeSpeed(int changeSpeed) {
        speed = changeSpeed;
    }

    void printState() {
        System.out.print("Cadance = "+cadance);
    }
}
4

2 回答 2

3

你所拥有的是一个隐含的默认构造函数。它从未被拼写出来,但它被 IDE 和编译器理解为存在。非静态类通常被理解为具有构造函数,因此如果没有显式创建构造函数,则使用默认构造函数。它不接受任何参数,并且除了使用显式提供的属性值初始化类之外什么都不做。有时,您可以只使用默认设置。

有关更多信息,我正在链接默认构造函数的维基百科文章,因为我认为它很好地解释了多种语言。

从本质上讲,如果类中没有明确给出无参数构造函数,则默认构造函数由编译器提供(IDE 通常也允许您调用它)。因此,如果我编写了一个带参数的构造函数,但我不编写不带参数的构造函数,编译器仍然会提供一个。

这有点笼统,因为某些语言略有不同,但我认为大多数语言都是上述情况。

于 2012-11-30T15:29:01.970 回答
1

构造函数是隐含的默认构造函数

如果没有定义其他构造函数,则提供空构造函数(不带参数)是 Java(和其他语言)的惯例。

值得注意的是,只要您添加任何带参数的构造函数,那么隐含的默认构造函数就不再可用。

于 2013-01-08T18:11:45.030 回答