簡體   English   中英

Java Eclipse-未定義的構造函數和方法

[英]Java Eclipse - Undefined constructors and methods

錯誤在底部的主類中,我在代碼中詳細列出了它們以及它們的錯誤消息。 我的Session構造函數中也有一個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 setPlansLeft(int pl)
   {
       plansLeft = pl;
   }


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


public class Session extends Customer 
{   
    public int sessionIDNumber = 0000;
    public int spotsLeft = 0;

    public Session()
    {
    }

    public Session (String Name, int ID, int plansLeft, int sID, int sl) 
       {
        super(Name, ID, plansLeft); // <----- perhaps an issue here?
        sessionIDNumber = sID;
        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) 
{
    //public Customer(){}    // <----- tried using this but only adds more errors

    Customer customer = new Customer("Sarah", 12345678, 12, 0117, 0); // < ----- error is here: "The constructor Main.Customer(String, int, int, int, int) is undefined"

    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()); // < ------ couple more errors here: "The method getsessionIDNumber/getspotsLeft() is undefined for the type Main.Customer"
}
}

將客戶類定義為靜態。 這是示例:

  public class Main 
{
public static 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 setPlansLeft(int pl)
   {
       plansLeft = pl;
   }


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


public class Session extends Customer 
{   
    public int sessionIDNumber = 0000;
    public int spotsLeft = 0;

    public Session()
    {
    }

    public Session (String Name, int ID, int plansLeft, int sID, int sl) 
       {
        super(Name, ID, plansLeft); // <----- perhaps an issue here?
        sessionIDNumber = sID;
        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) 
{
    //public Customer(){}    // <----- tried using this but only adds more errors

    Customer customer = new Customer("Sarah", 12345678, 12); // < ----- error is here: "The constructor Main.Customer(String, int, int, int, int) is undefined"

    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()); // < ------ couple more errors here: "The method getsessionIDNumber/getspotsLeft() is undefined for the type Main.Customer"
}
}

記住一件事,當您使用繼承時,總是創建child(sub)類的對象。 在您的情況下,Session是其中有五個參數但創建了沒有五個參數的Customer類的子類。

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

此行發出錯誤,因為Customer類沒有五個參數。

Customer和Session類都存在於Main類中,因此它們的對象可通過Main類對象進行訪問。

使用下面的代碼而不是上面的代碼-

Session session= new Main().new  Session("Sarah", 12345678, 12, 0117, 0);

創建子類對象時,它也會調用父類構造函數。 對於您的評論,請使用會話對象調用所有內容,

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

嘗試這個:
Customer customer = new Main().new Customer("Sarah", 12345678, 12)

暫無
暫無

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

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