我有以下代码,其中有一个static counter field
来跟踪创建了多少Parent
个对象。当我创建子类的实例时,parent
的计数器也增加了,我不想发生这种情况。有什么帮助吗?
这是代码
class Parent1 {
private String name;
private int id;
public static int count=0;
public Parent1(String name, int id){
this.name=name;
this.id=id;
count++;
}
}
class Child1 extends Parent1{
private int age;
public Child1(String name, int id, int age){
super(name, id);
this.age=age;
}
}
public class App {
public static void main(String[] args){
Parent1 par= new Parent1("aa",5);
Parent1 par2=new Parent1("bb",10);
System.out.println(Parent1.count);
Child1 chi1= new Child1("aa",5,4);
Child1 chi2=new Child1("bb",5,10);
System.out.println(Child1.count);
}
}
The output is
2
4
最佳答案
做这个:
class Parent1 {
private String name;
private int id;
public static int count=0;
public Parent1(String name, int id) {
this(name, id, true);
}
protected Parent1(String name, int id, boolean incrementCount){
this.name=name;
this.id=id;
if( incrementCount )
count++;
}
}
class Child1 extends Parent1{
private int age;
public Child1(String name, int id, int age){
super(name, id, false);
this.age=age;
}
}
//....
Parent1 par= new Parent1("aa",5);
Parent1 par2=new Parent1("bb",10);