public class A {
String name;
public A() {
this("My Name");
}
}
我从我正在阅读的电子书(Dietel_Java_HowTo)中看到了这行代码,并尝试阅读有关构造函数的一些文章(javaworld / constructor)。他们使用了我所拥有的代码片段。它给了我一个未定义的字符串错误。
this关键字是否引用变量名称,如果是,为什么我会收到错误。我是java的新手,请耐心等待。
答案 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
的构造函数需要String
(string 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
}
}