我正在尝试编写扩展学生的本科课程
这是基类(学生)
public class Student{
private String name;
private int id;
private double gpa;
public Student(){
}
public Student(int id, String name, double gpa){
this.id = id;
this.name = name;
this.gpa = gpa;
}
public Student(int id, double gpa){
this(id, "", gpa);
}
public String getName(){
return name;
}
public int getId(){
return id;
}
public double getGPA(){
return gpa;
}
public void setName(String newName){
this.name = newName;
}
@Override
public String toString(){
return "Student:\nID: " + id + "\nName: " + name + "\nGPA: " + gpa;
}
}
这里是派生类(Undergrad)
public class Undergrad extends Student {
private String year;
public Undergrad (int id , String name ,double gpa,String year)
{
super(id,name , gpa);
this.year =year;
}
@Override
public String toString(){
return super() + " the year is :" + year;
}
}
我面临的问题是日食表明我有 类 Undergrad 中 toString 方法中的错误 正好在 super()调用错误说
我能找到任何帮助吗?“令牌”超级“上的语法错误,无效的名称”
答案 0 :(得分:4)
super()
调用
如果你想调用超类方法,你需要调用super.toString()
。
public String toString()
{
return super.toString() + " the year is :" + year;
}
这是super
关键字
的语法
1.调用超类构造函数是
- 超级(); //超类无参数构造函数被称为
- super(参数列表); //具有匹配参数列表的超类构造函数称为
醇>
2.调用超类成员是
- super.fieldName; //此处成员是超类
的字段- super.methodName(); //这里的成员是超类的方法
醇>
答案 1 :(得分:2)
调用超类方法时,请使用语法super.methodName()
:
{return super.toString() + " the year is :" + year;}
这与从子类构造函数中调用超类构造函数不同;该语法只需要关键字super
,不需要点,也不需要方法名,因为你已经拥有它。
答案 2 :(得分:0)
super.toString()
调用超类方法。
super()
调用超类构造函数。