增变器和访问器(使用继承)

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 的值尚未设置。基本上你的代码没有任何意义。您正在设置一个 属性,其值与尚未设置的 属性 相同。