2014-02-15 92 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 ; 
    } 
}