Java 为什么输出错误(get/set方法)
只是通过get/set方法,我的输出有问题。它不显示对象的名/姓,而是显示null/null 谁能提供一些见解,我不熟悉get/set方法 代码 这是我的类,用于创建对象并运行toString方法Java 为什么输出错误(get/set方法),java,Java,只是通过get/set方法,我的输出有问题。它不显示对象的名/姓,而是显示null/null 谁能提供一些见解,我不熟悉get/set方法 代码 这是我的类,用于创建对象并运行toString方法 public class PersonDriver { public static void main(String[]args){ Person p1 = new Person ("Thomas", "Brown"); System.out.print(p1.toString(
public class PersonDriver {
public static void main(String[]args){
Person p1 = new Person ("Thomas", "Brown");
System.out.print(p1.toString());
}
}
您需要将参数分配给实例变量,而不是相反。您当前正在做的是重新分配传递给构造函数的a和b,而您需要将a和b的值分配给类的firstName和lastname字段
public Person (String a, String b){
firstName = a;
lastName = b;
}
您的设置程序应该接受一个参数—要设置的值。您的构造函数应该将参数的值分配给类属性,而不是相反。我认为构造函数必须像
public Person (String a, String b){
firstName = a;
lastName = b;
}
您在构造函数中反转了变量 您需要更改以下代码
public Person (String a, String b){
a = firstName;
b = lastName;
}
到
你需要交换变量。将对象的值指定给参数
public Person (String a, String b){
firstName= a;
lastName= b;
}
此外,如果没有参数,设置方法也没有用处:
public void setlastName(String parameter){
this.lastName = parameter;
}主要是设置者必须
public void setFirstName(String firstName){
this.firstName = firstName;
}
public void setLastName(String lastName){
this.lastName = lastName;
}
你确定你的方法不应该更符合这个
public class Person {
private String firstName;
private String lastName;
public Person (String a, String b){
firstName=a;
lastName=b;
}
public String getfirstName(){
return firstName;
}
public void setfirstName(String firstName){
this.firstName = firstName;
}
public String getlastName(){
return lastName;
}
public void setlastName(String lastName){
this.lastName = lastName;
}
public String toString() {
String s = "First name:" + firstName + "Last name:" + lastName;
return s;
}
}
您需要将要设置变量的值传递给setter方法。除此之外,与前面提到的其他变量一样,您交换了构造函数中的变量名: 哦,他们走错了路。现在我觉得自己很愚蠢。谢谢。类变量只不过是静态变量。@AjayThakur-您有实例变量类变量,这些变量对于类的每个实例都是唯一的,而静态变量对于类的所有实例都是通用的。@R.J从某种意义上说,根据at,他是对的lest@IvayloStrandjev-我只是想澄清一下,我不是那个意思,我把它改为实例变量。这个定义清楚地说明了类变量不是实例变量。在getter和setter方法中,一般约定set/get之后的第一个字母应该以大写字母开头,例如setLastName/getlastname请将set/get名称的第一个字母设为大写字母,如setFirstName+1
public void setFirstName(String firstName){
this.firstName = firstName;
}
public void setLastName(String lastName){
this.lastName = lastName;
}
public class Person {
private String firstName;
private String lastName;
public Person (String a, String b){
firstName=a;
lastName=b;
}
public String getfirstName(){
return firstName;
}
public void setfirstName(String firstName){
this.firstName = firstName;
}
public String getlastName(){
return lastName;
}
public void setlastName(String lastName){
this.lastName = lastName;
}
public String toString() {
String s = "First name:" + firstName + "Last name:" + lastName;
return s;
}
}