在Java中通过super访问方法和变量

在Java中通过super访问方法和变量,java,Java,我试图实现下面的代码,但我在HistoryStudent extends学生sGrade类中遇到一个错误。如何通过super添加学生成绩? 这是一个赋值,我们不应该更改抽象类中的任何内容或下面代码的任何部分 abstract class Student { private String studentID = "" ; private int studentGrade = 0 ; public Student (String sID, int sGr

我试图实现下面的代码,但我在HistoryStudent extends学生sGrade类中遇到一个错误。如何通过super添加学生成绩? 这是一个赋值,我们不应该更改抽象类中的任何内容或下面代码的任何部分

abstract class Student
{
    private String studentID    =   "" ;
    private int studentGrade    =   0 ;

    public Student (String sID, int sGrade)
    {
        studentID       = sID  ;
        studentGrade    = sGrade ;

        return ;
    }


    public String getStudentID      () { return studentID       ;}
    public double getStudentGrade   () { return studentGrade    ;}


    boolean updateGrade (int grade)
    {
        boolean check = false ;

        studentGrade += grade;

        return check ;
    }

}

class HistoryStudent extends Student
{
    public HistoryStudent (String sID, int sGrade)
    {
        super(sID,sGrade) ;


        return ;
    }


    boolean updateGrade (int grade)
    {
        boolean checking = false ;

            //Problem here
        **sGrade** += grade;

        return checking ;
    }
}

非常感谢您的帮助。

请检查超级类中的
updateGrade(int-grade)
,该类正是您想要做的

//Problem here
**sGrade** += grade;   //Line mention in code
sGrade
HistoryStudent
构造函数中的局部变量declare,因此无法在
updateGrade
方法中访问它

class HistoryStudent extends Student
{
    int sGrade;

    public HistoryStudent (String sID, int sGrade)
    {
        super(sID,sGrade) ;
        this.sGrade = sGrade;
    }


    boolean updateGrade (int grade)
    {
        boolean checking = false ;
        sGrade += grade;    // Dnt know usage bcoz everytime method will return false
        return checking ;
    }
}
您可以将
sGrade
声明为全局变量,并在方法中调用超级构造函数时设置全局变量值,并在
updateGrade
方法中访问它

class HistoryStudent extends Student
{
    int sGrade;

    public HistoryStudent (String sID, int sGrade)
    {
        super(sID,sGrade) ;
        this.sGrade = sGrade;
    }


    boolean updateGrade (int grade)
    {
        boolean checking = false ;
        sGrade += grade;    // Dnt know usage bcoz everytime method will return false
        return checking ;
    }
}

更改HistoryStudent类中的更新方法

boolean updateGrade(int grade)

{
    boolean checking = false ;
    super.updateGrade(grade);
    return checking ;
}

你在类中面临的问题基本上这将调用父类updateGrade(int grade)方法,该方法只能更改其私有属性,如studentID和studentGrade。