2013-02-20 120 views
2

我把下面的構造函數放在一起。我有一個問題:我如何在沒有參數的情況下使用相同的構造函數,並且同時使用兩個或三個構造函數?有多種方法可以做到這一點嗎?謝謝構造函數中的多個參數

public class bankaccount { 

    String firstnameString; 
    String lastnameString; 
    int accountnumber; 
    double accountbalance;; 

    public bankaccount(String firstname,String lastname){ 
    int accountnumber=999999; 
    double accountbalance=0.0; 
    } 
} 
+0

只需定義多個構造函數。 – 2013-02-20 15:08:11

+1

您正在當前構造函數中聲明局部變量,而您可能想要設置字段的值。你必須解決這個問題...... – jlordo 2013-02-20 15:21:50

+0

@jlordo他也不使用'firstname'或'lastname' – 2013-02-20 15:22:42

回答

6

您需要實現所有想要使用的變體。然後,您可以使用this()構造函數之間的調用,避免代碼冗餘:

public class BankAccount { 

    public BankAccount(){ 
    this("", ""); 
    // or this(null, null); 
    } 

    public BankAccount(String firstname){ 
    this(firstname, ""); 
    // or this(firstname, null); 
    } 

    public BankAccount(String firstname, String lastname){ 
     // implement the actual code here 
    } 
} 

順便說一句,你應該看看Java Coding Conventions - class names(因此構造函數)駱駝情況下注意。

+0

風格點 - 我會建議'空'將是一個更合適的默認值。但每一個都是他們自己的... – 2013-02-20 15:11:11

+0

@DuncanJones同意,我的頭腦在這些替代品之間瘋狂跳躍,同時打字:)最後,它基本上取決於「最終」構造函數的作用 – 2013-02-20 15:20:56

0

如果您沒有實現任何構造函數,則會爲您提供無參數構造函數。如果你想擁有多個構造函數,你可以自己實現所有的構造函數。

public class bankaccount { 

    String firstnameString; 
    String lastnameString; 
    int accountnumber; 
    double accountbalance;; 

    public bankaccount(String firstname,String lastname){ 
    int accountnumber=999999; 
    double accountbalance=0.0; 
    } 

    public bankaccount(){ 
    // put code here, or call this(null,null)/a different constructor 
    } 

} 
+0

這兩個構造函數都具有相同的效果。 – jlordo 2013-02-20 15:20:18

0

其他人建議你創建多個構造函數,這很好。但是,在某些情況下,您可能更喜歡只有零參數構造函數,並使用getter和setter來訪問屬性。

您的BankAccount類可能是這些情況之一。它看起來像一個數據對象,它是通過使用某些ORM(例如Hibernate)持久化到DBMS中的對象之一。 Hibernate不需要多參數構造函數,它將調用零參數構造函數並通過getters和setter訪問屬性。

這是什麼課程?它是映射到對象的數據庫實體嗎?你真的需要所有這些構造函數嗎(這可能是浪費時間)?

從理論上講,我的建議可以被認爲是與OO設計的良好實踐的鬥爭,但實踐與理論有些不同。如果你的類只是攜帶一些數據,你的構造函數不對所提供的參數的有效性進行檢查,那麼你可以列出屬性並使用IDE的功能來創建getter和setter。