增变器和访问器(使用继承)
Mutator and Accessor(Using Inheritance)
我希望我的程序从另一个 class.
输入一个私有变量
我想使用修改器和访问器。
它一直报错 NullPointerException。我的代码有什么问题?
public abstract class Inputs {
private String val;
private String typ;
public abstract void setVal(String val);
public abstract void setTyp(String typ);
public abstract String getVal();
public abstract String getTyp();
}
public DeckOfCards extends Inputs{
String val;
String typ;
static DeckOfCards kerds = new DeckOfCards();
public void setVal(String val){
this.val = val;
}
public void setTyp(String typ){
this.typ = typ;
}
public String getVal(){
return this.val;
}
public String getTyp(){
return this.typ;
}
public static void main(String args[]){
System.out.print("Value: ");
kerds.setVal(kerds.val);
if(kerds.val.equals("A"){
System.out.print("Type: ");
kerds.setTyp(kerds.typ);
}
}
}
这是你的问题 kerds.setVal(kerds.val);
kerds 在主要运行时尚未创建。
- 使用前需要先初始化DeckOfCards实例
- 仅在设置后尝试检索值。否则尝试检索尚未设置的值将抛出 NullPointerException(正如 Rehman 指出的那样)
下面是一个正确使用的例子:
public static void main(String args[]){
DeckOfCards kerds = new DeckOfCards();
kerds.setVal("A");
kerds.setTyp("TYPE_A");
System.out.println("Displaying values of kerds");
System.out.println("kerds value : " + kerds.getVal());
System.out.println("kerds type : " + kerds.getTyp());
}
kerds.setVal(kerds.val)
正在设置空值。此时 kerds.val 的值尚未设置。基本上你的代码没有任何意义。您正在设置一个 属性,其值与尚未设置的 属性 相同。
我希望我的程序从另一个 class.
输入一个私有变量我想使用修改器和访问器。
它一直报错 NullPointerException。我的代码有什么问题?
public abstract class Inputs {
private String val;
private String typ;
public abstract void setVal(String val);
public abstract void setTyp(String typ);
public abstract String getVal();
public abstract String getTyp();
}
public DeckOfCards extends Inputs{
String val;
String typ;
static DeckOfCards kerds = new DeckOfCards();
public void setVal(String val){
this.val = val;
}
public void setTyp(String typ){
this.typ = typ;
}
public String getVal(){
return this.val;
}
public String getTyp(){
return this.typ;
}
public static void main(String args[]){
System.out.print("Value: ");
kerds.setVal(kerds.val);
if(kerds.val.equals("A"){
System.out.print("Type: ");
kerds.setTyp(kerds.typ);
}
}
}
这是你的问题 kerds.setVal(kerds.val);
kerds 在主要运行时尚未创建。
- 使用前需要先初始化DeckOfCards实例
- 仅在设置后尝试检索值。否则尝试检索尚未设置的值将抛出 NullPointerException(正如 Rehman 指出的那样)
下面是一个正确使用的例子:
public static void main(String args[]){
DeckOfCards kerds = new DeckOfCards();
kerds.setVal("A");
kerds.setTyp("TYPE_A");
System.out.println("Displaying values of kerds");
System.out.println("kerds value : " + kerds.getVal());
System.out.println("kerds type : " + kerds.getTyp());
}
kerds.setVal(kerds.val)
正在设置空值。此时 kerds.val 的值尚未设置。基本上你的代码没有任何意义。您正在设置一个 属性,其值与尚未设置的 属性 相同。