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

时间:2013-09-17 18:14:05

标签: java

我正在尝试编写扩展学生的本科课程

这是基类(学生)

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()调用错误说

  

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

我能找到任何帮助吗?

3 个答案:

答案 0 :(得分:4)

仅在构造函数中允许

super()调用 如果你想调用超类方法,你需要调用super.toString()

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

这是super关键字
的语法  1.调用超类构造函数是

  
      
  1. 超级(); //超类无参数构造函数被称为
  2.   
  3. super(参数列表); //具有匹配参数列表的超类构造函数称为
  4.   

2.调用超类成员是

  
      
  1. super.fieldName; //此处成员是超类
  2. 的字段   
  3. super.methodName(); //这里的成员是超类的方法
  4.   

答案 1 :(得分:2)

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

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

这与从子类构造函数中调用超类构造函数不同;该语法只需要关键字super,不需要点,也不需要方法名,因为你已经拥有它。

答案 2 :(得分:0)

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

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