【问题标题】:issue with using super() [duplicate]使用 super() 的问题 [重复]
【发布时间】:2018-08-28 01:27:16
【问题描述】:

我收到语法错误 “令牌“{”上的语法错误,{ 应在此令牌之后” 和 在我的 Customer 类中使用 super() 关键字后,“语法错误,插入“}”以完成 Block”。我已经查看了有关此问题的其他论坛帖子,但我已经将 super() 作为我的 Customer 课程中的第一件事。我该如何解决这个问题?

import java.util.*;

public class Main 
{
public class Customer 
{
   public String Name = "";
   public int ID = 0000;
   public int plansLeft = 0;


   public Customer()
    {
    }

   public Customer (String n, int id, int pl) 
   {
      Name = n;
      ID = id;
      plansLeft = pl;
   }
   public void setName(String n)
   {
      Name = n;  
   }
   public void setidnumber(int id)
   {
       ID = id;
   } 
   public void setdepartmen(int pl)
   {
       plansLeft = pl;
   }


   public String getName()
   {
      return Name;
   }
   public int getIDNumber()
   {
      return ID;
   }
   public int getPlansLeft()
   {
      return plansLeft;
   }
}


public class Session extends Customer 
{
    super(Name, ID, plansLeft);    // <------------------------- issue is here

    public int sessionIDNumber = 0000;
    public int spotsLeft = 0;

    public Session()
    {
    }

    public Session (int cID, int sl) 
       {
        sessionIDNumber = cID;
        spotsLeft = sl;
       }

    public int getsessionIDNumber() {
        return sessionIDNumber;
    }

    public int getspotsLeft() {
        return spotsLeft;
    }

    public void setsessionIDNumber(int sessionIDNumber) {
        this.sessionIDNumber = sessionIDNumber;
    }

    public void setspotsLeft(int sl) {
        this.spotsLeft = sl;
    }
}




public static void main(String[] args) 
{
    Session session = new Session(0117, 1);
    Customer customer = new Customer("Sarah", 12345678, 12);

    System.out.println("Customer Name: " + customer.getName() + "\nCustomer ID: " + customer.getIDNumber() + "\nLessons Remaining: " + customer.getPlansLeft());
    System.out.println("\nSession ID: " + session.getsessionIDNumber() + "\nOpen Spots Available: " + session.getspotsLeft());
}
}

【问题讨论】:

  • 不是 class的第一行,constructor的第一行
  • 为什么当链接的帖子没有与我相同的错误消息时,它被标记为重复?这些回复让我比以前更困惑,现在我的问题不会再得到那么多的意见/答案了。
  • 您不再需要查看。副本解释了如何使用 super ,这是你的问题和错误的原因——你不知道。您的问题已经得到解答

标签: java super


【解决方案1】:

您必须将一些值传递给超类构造函数。你应该在构造函数之后调用 super 作为第一行

它应该看起来像这样

public Session (int cID, int sl, String Name, int id, int plansLeft) 
   {
    super(Name, id, plansLeft);
    sessionIDNumber = cID;
    spotsLeft = sl;
   }

主要

public static void main(String[] args) 
{

Customer customer = new Customer(0117, 1, "Sarah", 12345678, 12);

System.out.println("Customer Name: " + customer.getName() + "\nCustomer ID: " + customer.getIDNumber() + "\nLessons Remaining: " + customer.getPlansLeft());
System.out.println("\nSession ID: " + customer.getsessionIDNumber() + "\nOpen Spots Available: " + customer.getspotsLeft());
}
}

【讨论】:

    【解决方案2】:

    你想要:

    public Session() { 
      super(Name, ID, plansLeft);
    }
    

    super() 作为对父构造函数的调用必须是子构造函数的第一行。

    【讨论】:

      猜你喜欢
      • 2020-07-24
      • 2016-06-07
      • 1970-01-01
      • 1970-01-01
      • 2020-07-05
      • 2019-05-15
      • 1970-01-01
      • 1970-01-01
      • 2021-09-15
      相关资源
      最近更新 更多