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

コンストラクターの目的は変数の初期化です。もちろん、同じクラス内に複数のコンストラクターを含めることができます。コンストラクターを呼び出すたびに、異なるオブジェクトが作成されます。ただし、変数に対していくつかの操作を実行する場合は、メソッドを使用する方が適切です。メソッドもオーバーロードされ、同じオブジェクトで呼び出すことができます。たとえば、

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 = 新しい Calcy(5.3,6.1); cal = 新しい Calcy();

コンストラクター:

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

は正しくありません。初期値が必要です。

于 2013-01-22T03:29:13.967 に答える
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?
}

前の計算の状態を保存したい場合は、単純に複数のインスタンスを保存してください。

1 つの 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

オブジェクトは 1 回だけ作成できます。ただし、コンストラクターは、他のコンストラクターを含む他のメソッドを呼び出すことができます。ただし、コンストラクターが返されたら、それだけです。それが問題である場合は、メソッドまたは「初期化」メソッドにあるはずのコンストラクターにコードを入れている可能性がありますか?

于 2013-01-22T03:08:12.977 に答える