我将实例变量设置为唯一值
,private int registrationCourse = 2015000;
中的object class
。
我希望每次从1
调用此课程编号时{}增加main method
,因此它会变为2015001
,2015002
等。
我认为要做到这一点,我必须创建一个类变量并将其初始化为0
,因为它没有绑定到类。 (如果我错了,请纠正我)
即private static int numCourses = 0;
然后我必须创建一个构造函数,并初始化其他实例变量,并以下列方式递增注册号:
numCourses = registrationCourse;
numCourses++;
然而,我对处理构造函数是一个超级新手,所以我不明白为什么我不必做while
循环来做这件事。我的另一个问题是,当我尝试返回registrationCourse
数字时,对于这两种情况,它显然只返回最后一个递增的值,并且我想返回一个不同的值,每个object
增加一个。任何解释??
答案 0 :(得分:1)
您的静态值将在类实例的所有实例中共享。如果您希望维护在实例构造期间适用的实际数字,则需要将其复制到非静态(实例绑定)变量。
例如:
class c{
private int registrationCourse = 2015000;
private int incrementalValue = 0;
private static int nextIncrementalValue = 0;
public c(){
nextIncrementalValue +=1; //increase static, shared value.
this.incrementalValue = nextIncrementalValue; // set CURRENT value for later reference.
}
}
如果您现在要构建3个c
个实例,则每个nextIncrementalValue
(= 3
)的相同值都会因为它们共享相同的静态变量,但任何实例都有自己的incrementalValue
(= {1,2,3}
)
答案 1 :(得分:0)
关于构造函数的问题,您不需要while循环,因为您的应用程序只关心计算创建了多少个对象。对于每个对象,都会调用构造函数,因此您只需要构造函数中的增量代码。如果你决定需要实例化多少个对象,你可能需要在main()代码中使用while循环:
int i = 0;
while(i<10) {
Course course = new Course(); // assuming your class is named Course
}
这将使计数器增加10次。
关于返回每个对象创建的值的第二个问题,您需要一个“实例”变量。因此,创建另一个非静态变量并将numCourses值保存在其中:
static int totalCourses = 2015000;
int courseNumber = 0;
public Course() {
totalCourses++;
courseNumber = totalCourses;
}
所以,这里发生的事情是,totalCourses只是继续增加你拥有的每个新对象。然后保存每个课程编号,每个课程不同。
希望这有帮助。