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

时间:2014-02-15 20:47:19

标签: java

我正在尝试实现以下代码,但我在课程中遇到错误HistoryStudent扩展了Student,sGrade。如何通过超级添加学生成绩? 这是一个赋值,我们不应该在抽象类或下面代码的任何部分中更改任何内容。

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 ;
    }
}

任何帮助表示感谢。

3 个答案:

答案 0 :(得分:1)

//Problem here
**sGrade** += grade;   //Line mention in code

sGradeHistoryStudent构造函数中的局部变量声明,因此您无法使用updateGrade方法访问它。

您可以做的是将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 ;
    }
}

答案 1 :(得分:1)

更改HistoryStudent类中的更新方法。

boolean updateGrade(int grade)

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

答案 2 :(得分:0)

检查超级类updateGrade (int grade),它完全符合您的要求。