0

我有同一个类的不同构造函数,我想用同一个对象调用它们。可能吗?

如:

class Calcy
{
  int a,b,d;
  double c;

  Calcy()
  {
    c=a+b;
    System.out.println("Ans -> "+c);
  }

  Calcy(int a,int b)
  {
    c=a/b;
    d=a%b;
    System.out.println("Ans -> "+c+d);
  }   

  Calcy(double a,double b)
  {
    c=a*b;
    System.out.println("Ans -> "+c);
  }

  public static void main(String[] args)
  {
    Calcy **cal** = new Calcy(7,6);
    Calcy **cal** = new Calcy(5.3,6.1);
    Calcy **cal** = new Calcy();
  }
}
4

4 回答 4

0

一个对象只能构造一次。但是,构造函数可以调用其他方法,包括其他构造函数。但是,一旦构造函数返回,就是这样。如果这是一个问题,也许您将代码放在应该在方法中或“初始化”方法中的构造函数中?

于 2013-01-22T03:08:12.977 回答
0

您可以根据Calcy需要创建任意数量的对象:

public static void main(String[] args)
{
Calcy cal = new Calcy(7,6);
cal = new Calcy(5.3,6.1);
cal = new Calcy(); // What does this mean to calculate nothing?
}

如果要保留之前计算的状态,只需存储多个实例即可。

如果您想将一个 Calcy 提供给下一个对象,只需扩展您的构造函数以将 Calcy 作为输入,即:

  Calcy(Calcy a,int b)
  {
    c=a.getC() / b;
    d=a.getD() % b; // Guessing this is what you want? 
    System.out.println("Ans -> "+c+d);
  } 

请注意,您需要为 c 和 d 创建访问器。

于 2013-01-22T03:11:11.010 回答
0

构造函数的目的是变量初始化。当然,同一个类中可以有多个构造函数。每次调用构造函数时都会创建一个不同的对象。但是如果你想对变量执行一些操作,最好使用方法。即使方法可以被重载,你可以在同一个对象上调用它们。例如,

int add(int x,int y){
   return (x+y);
}

float add(float x,float y){
   return (x+y);
}
于 2013-01-22T03:26:16.637 回答
0

您不能创建重复的对象:

Calcy **cal** = new Calcy(7,6);
Calcy **cal** = new Calcy(5.3,6.1);
Calcy **cal** = new Calcy();

但是您可以使用其他构造函数创建许多对象或使用以下构造函数对对象进行签名:

Calcy **cal1** = new Calcy(7,6);
Calcy **cal2** = new Calcy(5.3,6.1);
Calcy **cal3** = new Calcy();

或 Calcy cal = new Calcy(7,6); cal = new Calcy(5.3,6.1); cal = 新 Calcy();

构造函数:

  Calcy()
  {
    c=a+b;
    System.out.println("Ans -> "+c);
  }

不正确,您需要初始值。

于 2013-01-22T03:29:13.967 回答