簡體   English   中英

跟蹤實例化對象數量的Java類變量

[英]Java class variable that tracks number of objects instantiated

我有一個帶有變量StudentID的班級Student:

public class Student extends Person{
  int studentID = 0;
  int level;

  public Student(){

  }

  public Student(String fName, String lName, int gLevel){
    super(fName, lName);
    if(gLevel >= 0 && gLevel <= 12){
      level = gLevel;
    }
    studentID++;
  }
  public int getLevel(){
    return level;
  }
  public String toString(){
    String toReturn;
    toReturn = super.toString() + "\n   Grade Level: " + level + "\n   ID #: " + studentID;
    return toReturn;
  }
}

我希望變量StudentID繼續分配給每個Student創建的新ID號。 每個ID號都應比上一個創建的ID號大一個,並且應等於已創建的對象總數。 現在,每個對象的ID號為1。

添加一個靜態counter並用它初始化studentID ,並在此過程中增加它:

public class Student extends Person{
  static counter = 1;
  int studentID = counter++;
  ...

您需要一個靜態變量來跟蹤創建的學生對象的數量。

public class Student extends Person{

    /* Number of students objects created */
    private static int studentCount = 0;   
    int studentID = 0;
    int level;

    public Student(String fName, String lName, int gLevel){
        super(fName, lName);
        if(gLevel >= 0 && gLevel <= 12){
            level = gLevel;
        }
        studentID = Student.getNextStudentId();
    }

    private static synchronized int getNextStudentId() {
        /* Increment the student count and return the value */
        return ++studentCount;
    }
}

將studentID設為靜態成員

靜態成員將在整個類的每個實例中保留,無論有多少個clas實例。

   public class Student extends Person{
      static int studentID = 0;
      int level;

      public Student(){

      }

      public Student(String fName, String lName, int gLevel){
        super(fName, lName);
        if(gLevel >= 0 && gLevel <= 12){
          level = gLevel;
        }
        studentID++;
      }
      public int getLevel(){
        return level;
      }
      public String toString(){
        String toReturn;
        toReturn = super.toString() + "\n   Grade Level: " + level + "\n   ID #: " + studentID;
        return toReturn;
      }
    }

暫無
暫無

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

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