2013-01-22 212 views
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(); 
    } 
} 

回答

0

一個目的可以構造只一次。但是,構造函數可以調用其他方法,包括其他構造函數。但是,一旦構造函數返回,就是這樣。如果這是一個問題,也許你把代碼放在應該在方法中或者在'初始化'方法中的構造函數中?

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存取。

0

構造函數的目的是變量initialization.Ofcourse在同一個類中可以有多個構造函數。每次調用構造函數時都會創建一個不同的對象。但是如果你想對變量執行一些操作,最好使用方法。甚至可以重載方法並且可以在同一個對象上調用它們。對於例如,

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

float add(float x,float y){ 
    return (x+y); 
} 
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 = new Calcy();

構造函數:

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

是不正確的,你需要初始化值。