Java 构造函数和关键字“this”

Java 构造函数和关键字“this”,java,Java,我有一个语法错误,我不知道如何修复它。代码在我看来是正确的,但Eclipse告诉我构造函数调用必须是 方法setName和setAge处的构造函数 请注意,您的setter应该如下所示 public void setAge(a) { this.a = a; } 而不是构造一个新的对象。如果您不这样做,您就是在打破无处不在的Java惯例 假设您想在setter中创建一个新实例,您可以执行以下操作 public KeywordThis setAge(a){ return new Key

我有一个语法错误,我不知道如何修复它。代码在我看来是正确的,但Eclipse告诉我构造函数调用必须是 方法setName和setAge处的构造函数


请注意,您的setter应该如下所示

public void setAge(a) {
   this.a = a;
}
而不是构造一个新的对象。如果您不这样做,您就是在打破无处不在的Java惯例

假设您想在setter中创建一个新实例,您可以执行以下操作

public KeywordThis setAge(a){
   return new KeywordThis(a);
}

不要用这个。当您尝试使用此方法时,只应在构造函数中为同一类调用另一个构造函数。

注意,您的设置程序应该如下所示

public void setAge(a) {
   this.a = a;
}
而不是构造一个新的对象。如果您不这样做,您就是在打破无处不在的Java惯例

假设您想在setter中创建一个新实例,您可以执行以下操作

public KeywordThis setAge(a){
   return new KeywordThis(a);
}

不要用这个。在尝试使用此方法时,只能在构造函数中为同一类调用另一个构造函数。

不能从实例方法调用这样的构造函数。您希望setter更改已有对象的值,而不是创建新对象。我想你的意思是:

public void setAge(int a){

    this.age = a;
}

public void setName(String s){

    this.name = s;
}

还要注意的是,您的setter通常不会返回值,因此我将它们更改为返回类型void。

您不能从实例方法调用这样的构造函数。您希望setter更改已有对象的值,而不是创建新对象。我想你的意思是:

public void setAge(int a){

    this.age = a;
}

public void setName(String s){

    this.name = s;
}

还要注意的是,您的setter通常不会返回值,因此我将它们更改为返回类型void。

一旦创建了对象,就不能手动调用构造函数。构造函数只能在另一个构造函数内调用

正如其他人指出的那样,应该是:

public void setAge(int a) {
    this.a = a;
}

一旦创建了对象,就不能手动调用构造函数。构造函数只能在另一个构造函数内调用

正如其他人指出的那样,应该是:

public void setAge(int a) {
    this.a = a;
}

公共类关键字this{

private String name;
private int age;

public KeywordThis(){

    this.name = "NULL";
    this.age = 0;

}

public KeywordThis(String s, int a){

    this.name = s;
    this.age = a;

}

public KeywordThis(String s){

    this.name = s;      
}

public KeywordThis(int a){

    this.age = a;

}

public int setAge(int a){

    this(a);
    int b=a;
    return b;
}

public String setName(String s){

    this(s);
    String s1=s;
    return s; 
}






public static void main(String args[] ){

   KeywordThis ob1=new Keyword();
   ob1.setAge(20);
   ob1.setName("sandy");

}


}
爪哇
共享|编辑

公共类关键字此{

private String name;
private int age;

public KeywordThis(){

    this.name = "NULL";
    this.age = 0;

}

public KeywordThis(String s, int a){

    this.name = s;
    this.age = a;

}

public KeywordThis(String s){

    this.name = s;      
}

public KeywordThis(int a){

    this.age = a;

}

public int setAge(int a){

    this(a);
    int b=a;
    return b;
}

public String setName(String s){

    this(s);
    String s1=s;
    return s; 
}






public static void main(String args[] ){

   KeywordThis ob1=new Keyword();
   ob1.setAge(20);
   ob1.setName("sandy");

}


}
爪哇
分享|编辑

你做了什么改变?为什么是答案?你做了什么改变?为什么是答案?