为什么java返回错误,构造函数参数未定义?

时间:2014-05-21 06:30:55

标签: java

public class A {
    String name;
    public A() {
       this("My Name");
    }
}

我从我正在阅读的电子书(Dietel_Java_HowTo)中看到了这行代码,并尝试阅读有关构造函数的一些文章(javaworld / constructor)。他们使用了我所拥有的代码片段。它给了我一个未定义的字符串错误。

this关键字是否引用变量名称,如果是,为什么我会收到错误。我是java的新手,请耐心等待。

4 个答案:

答案 0 :(得分:1)

通过在构造函数中使用this("My Name");,您正在调用类A的另一个重载构造函数,但是,您还没有定义接受String参数的构造函数。所以编译器抱怨它。

可能的更正版本

public class A{
  String name;
  public A(){
    this("My Name");
  }
  public A(String name){
    this.name = name;
  }
}

答案 1 :(得分:0)

因为没有A的构造函数需要Stringstring name应该String name)作为参数。要纠正它:

public class A{
  String name;
  public A(){
    this("My Name");
  }
  public A(String name){
    this.name = name;
  }
}

此外,您的程序无法编译,public class A(){}无效。

答案 2 :(得分:0)

这是因为您尝试使用this("My Name")调用来调用构造函数,但构造函数不接受任何参数。尝试定义另一个构造函数,如下所示:

public class A() {
    string name;
    public A() {
       this("My Name");
    }
    public A(String a) {
        this.name = name;
    }
}

看看the java tutorial on constructors以获得一个好主意。

答案 3 :(得分:0)

在java中使用this(parameters)关键字可以调用重载的构造函数。在您的情况下,您正面临编译时错误,因为您正在尝试调用属于静态多态概念的重载构造函数,因此它给出了编译时错误。因此,您将需要添加具有单个字符串参数的新构造函数,并且您的类将更改为以下类:

public class A{
  String name;
  public A(){
    this("My Name");
  }
  public A(String name){
    //your logic
  }
}