Java class variable that tracks number of objects instantiated

前端 未结 3 1713
长情又很酷
长情又很酷 2020-12-21 08:09

I have this class, Student, with the variable StudentID:

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

  public Student(){

  }         


        
相关标签:
3条回答
  • 2020-12-21 08:51

    Make the studentID a static member

    Static members are kept throughout each instance of the class no matter how many instances of the clas there are.

       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;
          }
        }
    
    0 讨论(0)
  • 2020-12-21 09:03

    Add a static counter and initialize studentID with it, incrementing it in the process :

    public class Student extends Person{
      static counter = 1;
      int studentID = counter++;
      ...
    
    0 讨论(0)
  • 2020-12-21 09:10

    You need a static variable to keep track of the number of students objects created.

    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;
        }
    }
    
    0 讨论(0)
提交回复
热议问题