Java 区分超类和子类之间的变量

Java 区分超类和子类之间的变量,java,class,inheritance,subclass,superclass,Java,Class,Inheritance,Subclass,Superclass,我正在开发一个程序,允许用户在四支球队中选择主客场足球队。我创建了一个通用的超类团队,该团队定义了每个安全/场地目标/触地得分。生成一个随机数,然后程序根据该随机数逐步执行条件if/else语句以确定操作和点 这在超类中: public void possessionPoints() { if(points<lowNopoints){ score = noPoints; totalScore = totalScore + score;

我正在开发一个程序,允许用户在四支球队中选择主客场足球队。我创建了一个通用的超类团队,该团队定义了每个安全/场地目标/触地得分。生成一个随机数,然后程序根据该随机数逐步执行条件if/else语句以确定操作和点

这在超类中:

public void possessionPoints()
{
    if(points<lowNopoints){
        score = noPoints;
        totalScore = totalScore + score;
        System.out.println("No points, plus " + score);
    }
    else if(points<lowSafetypoint){
        score = safetyPoint;
        totalScore = totalScore + score;
        System.out.println("Safety, plus" + score);
    }
    else if(points<lowFieldgoal){
        score = fieldGoal;
        totalScore = totalScore + fieldGoal; 
        System.out.println("Field goal, plus" + score);
    }
    else{
        score = touchDown;
        totalScore = totalScore + touchDown;
        System.out.println("Touchdown, plus" + score);
    }

    ArrayList<Integer> totalScore;
    totalScore = new ArrayList<>();
    totalScore.add(score);

    //the sum score
    int sum = totalScore.stream().mapToInt(Integer::intValue).sum();
    System.out.println("Current score is: " + sum);
}

关于如何解决这个问题有什么想法吗?我想跟踪每个团队的
总分。谢谢大家!

如果您希望跟踪每个团队级别,则应将其定义为成员变量,以便每个团队都有自己的
totalScore
字段副本


在超类中有一个
static
字段意味着它将始终是子类中发生的所有操作的总和。因为每个类只维护一个
静态
字段的副本。在您的案例中,您已经在super类中定义了它,这使它成为分数聚合的全局字段。

您能澄清一下吗?我删除了单词
static
,但是
totalScore
在程序中根本不起作用。我现在了解到,static将在整个超类和所有子类中保持
totalScore
变量相同。但是,应该在哪里进行更改以及如何进行更改?@PametnaGabi您需要将其作为您的子类的一部分,它代表了这里的团队。@SURESH ATTA我已经查看了“Java静态vs实例”问题。它帮助我理解了静态变量是错误的类型。但是,它不能帮助我回答解决此问题的具体问题。//我不确定我是否应该在超类中使用
totalScore
,只是修改设置,还是应该将它放在其他地方?
public class PackersSub extends GenericSuper{
public PackersSub()
{
    lowNopoints = 4;
    lowSafetypoint = 5;
    lowFieldgoal = 7; 
}