我有一个类,Student,带有变量StudentID:
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保持不变,为每个学生创建一个新的ID号。每个ID号都应该比上次创建的ID号多一个,因此等于已创建的对象总数。现在,每个对象都被指定了ID号1。
添加一个静态counter
并用它初始化studentID
,在过程中递增:
public class Student extends Person{
static counter = 1;
int studentID = counter++;
...
使studentID成为静态成员
无论类的实例有多少,静态成员都会保留在类的每个实例中。
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;
}
}
您需要一个静态变量来跟踪创建的学生对象的数量。
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;
}
}