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;
  }
}
4

3 回答 3

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 编码约定-类名(以及因此构造函数)以驼峰式命名。

于 2013-02-20T15:08:03.043 回答
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
  }

}
于 2013-02-20T15:09:19.543 回答
0

其他人建议您创建多个构造函数,这很好。但是,在某些情况下,您可能更喜欢只有零参数的构造函数并使用 getter 和 setter 来访问属性。

您的BankAccount班级可能是这些情况之一。它看起来像一个数据对象,是通过使用一些 ORM(例如 Hibernate)持久化到 DBMS 中的对象之一。Hibernate 不需要多参数构造函数,它会调用零参数构造函数并通过 getter 和 setter 访问属性。

这堂课是干什么用的?它是映射到对象的数据库实体吗?你真的需要所有这些构造函数吗(这可能是浪费时间)?

从理论上讲,我的建议可以被认为是与 OO 设计的良好实践的斗争,但实践与理论有些不同。如果您的类只携带一些数据并且您的构造函数不检查所提供参数的有效性,那么您可以只列出属性并使用 IDE 的工具来创建 getter 和 setter。

于 2013-02-20T15:13:56.153 回答