概述
通过类描述衣服, 每个衣服对象创建时需要自动生成一个序号值。
要求:每个衣服的序号是不同的, 且是依次递增 1 的。
代码实现
错误代码:
如果按照这样直接设置id为静态变量,那么创建n个对象所有的对象的这个属性都只会是n+本身的值
public class Main2 {
public static void main(String[] args) {
Cloth c1 = new Cloth();
Cloth c2 = new Cloth();
Cloth c3 = new Cloth();
System.out.println(c1.id);
System.out.println(c2.id);
System.out.println(c3.id);
}
}
class Cloth {
static int id;
{
id++;
}
public Cloth() {
}
}
正确代码
只有设置新的一个静态变量将其被赋值给非静态变量id之后自增一此时再进行创建对象时就可以值传递且不会因为创建新对象就改变老对象的值
public class Main2 {
public static void main(String[] args) {
Cloth c1 = new Cloth();
Cloth c2 = new Cloth();
Cloth c3 = new Cloth();
System.out.println(c1.id);
System.out.println(c2.id);
System.out.println(c3.id);
}
}
class Cloth {
int id;
static int key=1000;//设置静态变量
{
id = ++key;
}
public Cloth() {
}
}
运行效果截图
总结:一定要注意这种自增是通过值传递进行的,如果只设置id而不通过static变量的值来进行值传递那么运行了创建了三个对象后也只能是1003