关于java:令牌“超级”上的语法错误,名称无效

Syntax error on token “super”, invalid Name

我想写一个本科生班,扩大学生的范围。

这是基础班(学生)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
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:
ID:"
+ id +"
Name:"
+ name +"
GPA:"
+ gpa;
    }
}

这里是派生类(本科生)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
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;
    }
}

我面临的问题是日食显示我本科生ToString方法的一个错误就在super()处调用错误说明

"Syntax error on token"super", invalid Name"

我能帮个忙吗?


只允许在构造函数中调用super()。如果要调用超级类方法,则需要调用super.toString()

1
2
3
4
public String toString()
{
      return super.toString() +" the year is :" + year;
 }

这是EDOCX1"1"关键字的语法。1.用于调用超类构造函数的是

  • super(); //the superclass no-argument constructor is called
  • super(parameter list);//the superclass constructor with a matching parameter list is called
  • 2.调用超类成员是

  • super.fieldName;//here member is field of super class
  • super.methodName();//here member is method of super class

  • 调用超类方法时,使用语法super.methodName()

    1
    {return super.toString() +" the year is :" + year;}

    这与从子类构造函数中调用超类构造函数不同;这种语法只需要关键字super,没有点和方法名,正如您已经拥有的那样。


    super.toString()调用超类方法。

    super()调用超类构造函数。