2016-06-14 33 views
0

爲什麼我不能設置兩個具有相同參數(String,String,int)的構造函數?但在我的情況下,必須應用不同的值,例如A活動輸入accNo,phoneNo和金額,B活動輸入accNo,billNo,金額。兩個值相同的構造函數出錯[ANDROID]

Android Studio中它提示錯誤:

Bill(String, String, int) already defined

public class Bill { 

String acc_no; 
String bill_no; 
String phone_no; 
int amount_; 

public Bill() { 

} 

public Bill(String acc_no, String bill_no, String phone_no, int amount_) { 
    this.setAcc_no(acc_no); 
    this.setBill_no(bill_no); 
    this.setPhone_no(phone_no); 
    this.setAmount_(amount_); 
} 

public Bill(String acc_no, String phone_no, int amount_) { 
    this.acc_no = acc_no; 
    this.phone_no = phone_no; 
    this.amount_ = amount_; 
} 

public Bill(String acc_no, String bill_no, int amount_) { 
    this.acc_no = acc_no; 
    this.bill_no = bill_no; 
    this.amount_ = amount_; 
} 


public Bill(String acc_no, int amount_) { 
    this.setAcc_no(acc_no); 
    this.setAmount_(amount_); 
} 


public String getAcc_no() { 
    return acc_no; 
} 

public void setAcc_no(String acc_no) { 
    this.acc_no = acc_no; 
} 

public String getBill_no() { 
    return bill_no; 
} 

public void setBill_no(String bill_no) { 
    this.bill_no = bill_no; 
} 

public String getPhone_no() { 
    return phone_no; 
} 

public void setPhone_no(String phone_no) { 
    this.phone_no = phone_no; 
} 

public int getAmount_() { 
    return amount_; 
} 

public void setAmount_(int amount_) { 
    this.amount_ = amount_; 
} 
+0

這是構造函數和方法的基本規則。我們可以使用不同的參數創建相同的名稱,但我們不能用相同的名稱創建相同的參數。 –

回答

1

你不能有2個構造具有相同簽名(或刪除)。一個可能的解決方法是使用一個無參數的構造函數&實例方法做的正是你所需要的:

Bill bill = new Bill(); 
bill.method1(acc_no, phone_no, amount); 
bill.method2(acc_no, bill_no, amount); 

public method1(String acc_no, String phone_no, int amount_) { 
    this.acc_no = acc_no; 
    this.phone_no = phone_no; 
    this.amount_ = amount_; 
} 

public method2(String acc_no, String bill_no, int amount_) { 
    this.acc_no = acc_no; 
    this.bill_no = bill_no; 
    this.amount_ = amount_; 
} 
1

好了,你不能有兩個相同的構造函數,沒有意義的,但在你的情況,你可以只是交換參數

public Bill(String acc_no, String bill_no, int amount_) { 

public Bill(String acc_no, int amount_ ,String bill_no) { 
+0

如果我更改爲 public Bill(String acc_no,int amount_,String bill_no){ 它不會影響輸入值嗎?因爲我必須將這些值存儲到SQLite中,插入數據時它不會影響查詢嗎? –

+0

不,因爲您只交換構造函數的參數。可能影響查詢的參數類型保持不變,String和int。 – Inkognito

0

在Android中不能設置相同類型的兩個構造 ,但你這是什麼比C下面您修改參數

焊割序列類

public class Bill { 
    String acc_no; 
    String bill_no; 
    String phone_no; 
    int amount_; 

    public Bill() { 
    } 

    public Bill(String acc_no, String bill_no, String phone_no, int amount_) { 
     this.setAcc_no(acc_no); 
     this.setBill_no(bill_no); 
     this.setPhone_no(phone_no); 
     this.setAmount_(amount_); 
    } 

    public Bill(String acc_no, String phone_no, int amount_) { 
     this.acc_no = acc_no; 
     this.phone_no = phone_no; 
     this.amount_ = amount_; 
    } 

    public Bill(String acc_no, int amount_, String bill_no) { 
     this.acc_no = acc_no; 
     this.bill_no = bill_no; 
     this.amount_ = amount_; 
    } 


    public Bill(String acc_no, int amount_) { 
     this.setAcc_no(acc_no); 
     this.setAmount_(amount_); 
    } 


    public String getAcc_no() { 
     return acc_no; 
    } 

    public void setAcc_no(String acc_no) { 
     this.acc_no = acc_no; 
    } 

    public String getBill_no() { 
     return bill_no; 
    } 

    public void setBill_no(String bill_no) { 
     this.bill_no = bill_no; 
    } 

    public String getPhone_no() { 
     return phone_no; 
    } 

    public void setPhone_no(String phone_no) { 
     this.phone_no = phone_no; 
    } 

    public int getAmount_() { 
     return amount_; 
    } 

    public void setAmount_(int amount_) { 
     this.amount_ = amount_; 
    } 
} 
0

不能定義兩個構造函數具有相同的名稱,相同的返回類型,並在Java中相同的參數,因爲它不能將其用途,這結果之間的區別含糊不清。

一個可能的解決方案是添加第四個參數來區分這兩個構造函數。你做不必雖然使用這第四個參數。

public Bill(String acc_no, String phone_no, int amount_) { 
    this.acc_no = acc_no; 
    this.phone_no = phone_no; 
    this.amount_ = amount_; 
} 
public Bill(String acc_no, String bill_no, int amount_, int dummy) { 
    this.acc_no = acc_no; 
    this.bill_no = bill_no; 
    this.amount_ = amount_; 
    dummy = 0; 
} 
相關問題