我正在尝试实现以下代码,但我在课程中遇到错误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 ;
}
}
任何帮助表示感谢。
答案 0 :(得分: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 ;
}
}
答案 1 :(得分:1)
更改HistoryStudent类中的更新方法。
boolean updateGrade(int grade)
{
boolean checking = false ;
super.updateGrade(grade);
return checking ;
}
答案 2 :(得分:0)
检查超级类updateGrade (int grade)
,它完全符合您的要求。