在仅具有需要参数的已定义构造函数的 class 中调用默认构造函数(在 Java 中)
Invoking the default constructor (in Java) in a class that only has a defined constructor that requires parameters
请告诉我是否对以下代码有正确的理解:
public class Test {
public static void main(String[] args) {
A a = new A();
a.print();
}
}
class A {
String s;
A(String s) {
this.s = s;
}
void print() {
System.out.println(s);
}
}
行“A a = new A();”调用 class/constructor 来创建一个带有引用变量“a”的新对象。 Class A 有一个需要字符串参数的已定义构造函数,因此它没有默认构造函数。这意味着没有任何字符串参数的实例化会导致编译器错误。
如果我要在实例化中添加一个字符串参数,例如A a = new A("goldfish");该程序将编译并 运行.
我不确定我是否使用了正确的词汇,所以请随时纠正任何 inaccurate/confusing。谢谢!
你的理解很正确。我要更改的一件事是 "create a new object" 到 "create a new instance of A",并引用参数 s
中的 java.lang.String。在这种情况下,构造函数将该参数分配给一个字段,但它可以完全用它做其他事情(例如用它来计算某个字段的不同值)。
你写的大致正确。
更准确地说:"invokes the class/constructor" 并不完全正确。 A a = new A();
打算调用构造函数(调用class没有任何意义)。
虽然构造函数不是方法,但您可以将它们想成有点像方法:如果您的 class 定义了这样的方法:
public void myMethod(String s) { ... }
然后尝试不带任何参数调用 myMethod()
将会失败。这里也是一样。
请告诉我是否对以下代码有正确的理解:
public class Test {
public static void main(String[] args) {
A a = new A();
a.print();
}
}
class A {
String s;
A(String s) {
this.s = s;
}
void print() {
System.out.println(s);
}
}
行“A a = new A();”调用 class/constructor 来创建一个带有引用变量“a”的新对象。 Class A 有一个需要字符串参数的已定义构造函数,因此它没有默认构造函数。这意味着没有任何字符串参数的实例化会导致编译器错误。
如果我要在实例化中添加一个字符串参数,例如A a = new A("goldfish");该程序将编译并 运行.
我不确定我是否使用了正确的词汇,所以请随时纠正任何 inaccurate/confusing。谢谢!
你的理解很正确。我要更改的一件事是 "create a new object" 到 "create a new instance of A",并引用参数 s
中的 java.lang.String。在这种情况下,构造函数将该参数分配给一个字段,但它可以完全用它做其他事情(例如用它来计算某个字段的不同值)。
你写的大致正确。
更准确地说:"invokes the class/constructor" 并不完全正确。 A a = new A();
打算调用构造函数(调用class没有任何意义)。
虽然构造函数不是方法,但您可以将它们想成有点像方法:如果您的 class 定义了这样的方法:
public void myMethod(String s) { ... }
然后尝试不带任何参数调用 myMethod()
将会失败。这里也是一样。