在仅具有需要参数的已定义构造函数的 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() 将会失败。这里也是一样。