这段代码中是否有构造函数?

时间:2012-11-30 15:23:32

标签: java constructor

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

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);
    }
}

2 个答案:

答案 0 :(得分:3)

你有一个隐含的默认构造函数。它永远不会拼写出来,但IDE和编译器可以理解它。非静态类通常被理解为具有构造函数,因此如果没有显式创建构造函数,则使用默认构造函数。它不需要任何参数,除了使用显式提供的属性值初始化类之外,它并没有真正做任何事情。有时,您可以使用默认设置。

有关更多信息,我正在链接维基百科的Default Constructor文章,因为我认为它可以很好地解释几种语言。

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

这有点概括,因为有些语言略有不同,但我认为大部分语言都是如此。

答案 1 :(得分:1)

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

如果没有定义其他构造函数,那么Java(和其他语言)中的约定就是提供一个空构造函数(没有参数)。

值得注意的是,只要添加任何带参数的构造函数,就会隐藏默认构造函数。