构造函数重载

时间:2013-01-22 03:06:13

标签: java overloading

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

如:

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 个答案:

答案 0 :(得分:0)

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

答案 1 :(得分: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创建访问器。

答案 2 :(得分:0)

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

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

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

答案 3 :(得分: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 =新Calcy(7,6);      cal =新Calcy(5.3,6.1);      cal =新的Calcy();

构造函数:

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

不正确,需要初始值。