[英]How to establish the type of a class type in Java, without instantiated objects?
[英]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.