许多参数化构造函数

时间:2014-07-05 09:26:17

标签: java javascript

在一个类中使用2个参数化构造函数是否合乎道德?由于每个参数化构造函数都会影响类中方法执行的处理类型。

2 个答案:

答案 0 :(得分:0)

使用具有不同参数的多个构造函数是完全可以接受的。但是,对于您的类的用户而言,使用哪个构造函数并不重要。您不希望班级用户必须跟踪它。

例如,看一下java.lang.String课程。它包括:

String( byte[] bytes )
String( StringBuilder ) 

这些是具有不同参数的构造函数,但它们都会生成String的实例。对生成的String实例的用户如何创建它无关紧要。同样地,当您使用不同的构造函数创建自己的类时,您必须确保使用类实例的人不必跟踪使用哪个构造函数来创建实例。这是“道德的”,或者说是“良好的编程实践”部分。

所以答案是肯定的,如果有充分的理由,你甚至鼓励你使用多个构造函数,但要确保那些使用你的课程的人(包括将来的你!)不需要再做任何记账比必要的。

关于拥有多个构造函数的更多信息:

直接与问题无关,但是当您开始尝试使用多个构造函数时,您会遇到一些问题。 通常,您会发现有几个这样的构造函数共享基本操作;在这种情况下,您通常可以将此代码放在一个单独的构造函数中,使用this调用:

 class Foo
 {
     private String str;
     private int a;

     Foo( String str, int a )
     {
         this.str = str;
         this.a = a;
     }

     Foo( int a )
     {
         this( null, a );
     }

     Foo( String str )
     {
         this( str, 0 );
     }
}

答案 1 :(得分:0)

我只是不确定你的意思。您的构造函数中可能有多个参数,您可能会重载构造函数

public Objects(){
 //Do stuff
}

没有参数。您可以使用不同的签名

重载该构造函数
public Objects(String name){
 this.name = name;
 //Do stuff
}

又一次

public Objects(String name, int index){
 this.name = name;
 this.index = index;
}

另外,请选择一种语言标签。 Java和JavaScript不是一回事。如果您有任何问题,请随时提出。如果此答案有帮助,请将其标记为已解答