Java:计算创建的对象数 - 构造函数(调用this)

时间:2014-11-18 15:16:10

标签: java object constructor count this

创建对象的数量 - 构造函数

我想计算我创建的对象数量。

 class ctt
 {
    static int counter = 0;
    public ctt()
    {
        this(2.3);
        System.out.println("default ctt");
    }

    public ctt(double a)
    {
        System.out.println("Double ctt");
    }

    public ctt(int a)
    {
        this();
        System.out.println("Int ctt");
        counter++; 
    }

    public static void main(String[] args)
    {
       ctt c1 = new ctt(4); 
       ctt c2 = new ctt();

       System.out.println("No.of object created: "+counter);
    }
}

其中构造函数counter ++必须来。 [如果我在所有construtor方法中给出counter ++,对于第一个对象创建本身,counter ++会增加到3。 ]

       ctt c1 = new ctt(4); 

当我创建c1对象时,counter ++会增加到1。

       ctt c2 = new ctt();

此c2对象没有增加。 可以解决这个问题!

3 个答案:

答案 0 :(得分:0)

这看起来像是家庭作业,所以我会基于此回答。如果我错了,请发表评论,我会更新我的回答:

查看实际增加计数器的位置(只有一个),然后查看此方法/构造函数的签名与其他签名的不同之处。这应该可以帮助您了解正在发生的事情。

如果仍然没有帮助,请从调用代码开始使用调试器并逐步执行代码。

答案 1 :(得分:0)

使用integer作为参数的构造函数只有递增计数器的语句。

ctt c1 = new ctt(4)语句调用ctt(int a)

声明ctt c2 = new ctt(); - >调用ctt(),不会增加计数器。

如果你需要两个构造函数递增,你需要在ctt()构造函数中递增计数器。 ,即不带任何参数的构造函数。

答案 2 :(得分:0)

您只需要在c(双倍)中递增计数器。这是因为它在c()和c(int a)中调用,后者又调用c(),随后调用c(double a)