2014-02-15 130 views
0

我想实现下面的代码,但是我在类HistoryStudent extends Student,sGrade中出现错误。我如何着手通过超级添加学生成绩? 这是一项任务,我们不应该改变抽象类或下面代码的任何部分。在Java中通过超级访问方法和变量

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

任何帮助表示赞赏。

+0

ü面对的类 – Kick

回答

1

更改HistoryStudent类中的更新方法。

boolean updateGrade(int grade) 

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

什么问题,基本上,这将调用父类updateGrade(INT级)方法只能更改像studentID和studentGrade其私人属性。 – Devavrata

0

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

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

sGrade是在HistoryStudent构造局部变量声明,所以你不能在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 ; 
    } 
}