簡體   English   中英

令牌“ super”的語法錯誤,名稱無效

[英]Syntax error on token “super”, invalid Name

我正在嘗試寫本科課程以擴展學生

這是基類(學生)

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;
    }
}

這里是派生類(本科)

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()處調用了錯誤說

“令牌“超級”的語法錯誤,名稱無效”

請問有什么需要嗎?

僅在構造函數中允許super()調用。
如果要調用超類方法,則需要調用super.toString()

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

這是super關鍵字的語法
1.用於調用超類構造函數是

  1. 超(); //調用超類無參數構造函數
  2. super(參數列表); //具有匹配參數列表的超類構造函數被稱為

2.用於調用超類成員是

  1. super.fieldName; //這里成員是超類的字段
  2. super.methodName(); //這里成員是超類的方法

調用超類方法時,請使用語法super.methodName()

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

這與從子類構造函數中調用超類構造函數不同; 該語法只需要關鍵字super ,不帶點且不帶方法名,因為您已經有了它。

super.toString()調用超類方法。

super()調用超類構造函數。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM