如果我对以下代码有正确的理解,请告诉我:
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();”行调用类/构造函数以创建具有引用变量“a”的新对象。 A类有一个定义的构造函数,需要一个字符串参数,因此它没有默认的构造函数。这意味着没有任何字符串参数的实例化会导致编译器错误。
如果我要在实例化中添加字符串参数,例如A =新A(“金鱼”);该程序将编译并运行。
我不确定我是否使用了正确的词汇表,因此请随意纠正任何不准确/混乱的内容。谢谢!
答案 0 :(得分:1)
您的理解非常正确。我要改变的一件事是"创建一个新对象" to"创建一个新的A"引用参数s
中的java.lang.String。在这种情况下,构造函数将该参数分配给一个字段,但它可以完全用它做其他事情(例如用它来计算某个字段的不同值)。
答案 1 :(得分:1)
你写的内容大致正确。
更确切地说:"调用类/构造函数"不完全正确。 A a = new A();
打算调用构造函数(调用一个类并不意味着什么)。
虽然构造函数不是方法,但你可以把它们看作方法:如果你的类定义了这样的方法:
public void myMethod(String s) { ... }
然后尝试在没有任何参数的情况下调用myMethod()
将失败。它在这里也一样。