【问题标题】:Java: count number of objects created - contsructor (call to this)Java:计算创建的对象数 - 构造函数(调用 this)
【发布时间】:2015-01-15 20:08:24
【问题描述】:

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

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

 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++ 必须在哪个构造函数中出现。 [如果我在所有构造方法中给出 counter++,则 counter++ 会为第一个对象创建本身递增到 3。 ]

       ctt c1 = new ctt(4); 

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

       ctt c2 = new ctt();

这个 c2 对象没有增加。 任何人都可以解决这个问题!

【问题讨论】:

    标签: java object constructor count this


    【解决方案1】:

    您只需要增加 c (double a) 中的计数器。这是因为它在 c () 和 c (int a) 中被调用,而 c (int a) 又调用 c (),随后又调用 c (double a)

    【讨论】:

      【解决方案2】:

      这看起来像是一个家庭作业,所以我会根据这个来回答。如果我错了,请发表评论,我会更新我的答案:

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

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

      【讨论】:

      • 我应该在哪里增加计数器变量?
      • 我之前很困惑..感谢您的帮助!
      【解决方案3】:

      以整数作为参数的构造函数只有递增计数器的语句。

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

      语句ctt c2 = new ctt(); --> 调用ctt() 不会增加计数器。

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

      【讨论】:

      • 如果我将 counter++ 赋予默认构造函数,它也会影响 c1 对象。 c1 -> 增加两次。 c2 -> 增加一次。输出将得到:3 但应该是 2。
      猜你喜欢
      • 1970-01-01
      • 2019-07-25
      • 2013-09-24
      • 1970-01-01
      • 2011-06-29
      • 1970-01-01
      • 2017-03-04
      • 1970-01-01
      相关资源
      最近更新 更多