我用java编写了这个简单的类只是为了测试它的一些特性。
public class class1 {
public static Integer value=0;
public class1() {
da();
}
public int da() {
class1.value=class1.value+1;
return 5;
}
public static void main(String[] args) {
class1 h = new class1();
class1 h2 = new class1();
System.out.println(class1.value);
}
}
输出为:
2.
但在此代码中:
public class class1 {
public static Integer value=0;
public void class1() {
da();
}
public int da() {
class1.value=class1.value+1;
return 5;
}
public static void main(String[] args) {
class1 h = new class1();
class1 h2 = new class1();
System.out.println(class1.value);
}
}
这段代码的输出是:
0
那么,当我在构造函数方法声明中使用void时,类的静态字段为什么不再改变?
根据定义,在构造函数中使用void会导致它不再是构造函数。构造函数没有返回类型。虽然void在最严格意义上不会返回值,但它仍然被视为返回类型。
在第二个示例中(使用void),必须执行h.class1()
才能调用该方法,因为它不再是构造函数。或者你可以把这个空洞去掉。
public void class1()不是构造函数,它是一个void方法,其名称恰好与类名匹配。它从未被调用。相反,java创建了一个默认构造函数(因为您还没有创建一个),它什么都不做。
Java,构造函数不是方法。它只有类的名称和特定的可见性。如果它声明返回某些东西,那么它就不是构造函数,即使它声明返回val
也不是。请注意这里的区别:
public class SomeClass {
public SomeClass() {
//constructor
}
public void SomeClass() {
//a method, NOT a constructor
}
}
此外,如果类没有定义构造函数,那么编译器将自动为您添加默认构造函数。
实际上,我不明白无参数构造函数和默认构造函数的区别是什么。 在创建名为cFrame的Test对象时,是否调用此类的默认构造函数?
我有一个主类,DataManager,它有一个子类FileHandler,它扩展了DataManager。 另一类: 我遇到了一个错误,指出构造函数不能应用于给定类型。这是我第一次在Java中使用继承,这个问题对我来说并没有太大帮助。 下面是我从NetBeans获得的更具体的版本... “DataManager类中的构造函数DataManager不能应用于给定类型;必需:找到文件:无参数原因:实际
问题内容: 其实我不明白,无参数构造函数和默认构造函数有什么区别。 创建名为cFrame的Test对象时,这是否调用此类的默认构造函数? 问题答案: 该构造函数是一个无参数的构造函数,代表您的Java编译器插入; 它包含对(not )的调用,这是默认行为。如果实现任何构造函数,则不再收到默认的构造函数。 JLS-8.8.9。默认构造函数说(部分), 如果一个类不包含构造函数声明,则隐式声明一个没有
我正在浏览hibernate留档,文档说hibernate需要为我们所有的持久类提供一个no-arg构造函数: 无参数构造函数是所有持久类的要求;Hibernate必须使用Java反射为您创建对象。构造器可以是私有的,但是在没有字节码插装的情况下,运行时代理生成和有效的数据检索需要包或公共可见性。 但是当我通过创建一个没有任何无参数构造函数的POJO类并放置一个接受参数的构造函数来创建一个示例程序
问题内容: 我正在尝试编写一个程序,该程序采用不同形状的地毯,并使用子类中定义的某些变量创建地毯对象。我的代码是 而子类是 但是每当我尝试编译子类时,都会出现错误 我不确定该如何解决。 问题答案: 由于您的超类没有子类,因此您需要使用 super() 从子类构造函数中显式调用您的超类构造函数。这不必是子类构造函数的第一行。 一个建议: 遵循Java命名约定,变量名称应为camelCase。即,在这
我正在尝试编写一个程序,该程序采用不同形状的地毯,并使用子类中定义的某些变量创建地毯对象。我的代码是 子类是 但每当我试图编译子类时,我都会遇到错误 我不知道该怎么修理它。