Java 构造函数排序
我正在做一个项目,我想知道传递给构造函数的参数的顺序是否重要。例如,如果我创建了一个程序:Java 构造函数排序,java,constructor,Java,Constructor,我正在做一个项目,我想知道传递给构造函数的参数的顺序是否重要。例如,如果我创建了一个程序: public class Test{ int t3; String h; Test(int t1, String t2){ t3 = t1; String h = t2; } } 我这样做是否重要: Test t4 = new Test( "hello", 6); 而不是 Test t4 = new Test(6, "hello");
public class Test{
int t3;
String h;
Test(int t1, String t2){
t3 = t1;
String h = t2;
}
}
我这样做是否重要:
Test t4 = new Test( "hello", 6);
而不是
Test t4 = new Test(6, "hello");
像构造器中的顺序?谢谢 您可以执行以下操作:
public class Test{
int t3;
String h;
Test(int t1, String t2){
h = t2;
t3 = t1;
}
}
但并非如此:
Test t = new Test(t2,t1);
因为当您调用任何方法时,都需要遵守参数顺序。
如果您愿意,您可以这样做(您的代码将编译并执行),但随后您将进行值切换。是的……您必须尊重参数的顺序,因为构造函数将期望整数作为第一个参数,字符串作为第二个参数;与此不同的任何内容都可能引发错误。是的,顺序很重要,但您可以“重载”,这意味着添加另一个参数列表颠倒的构造函数,如
Test(String t2, int t1){
this.Test(t1,t2);
}
…如您所见,您可以调用内部的第一个构造函数,java将找到签名使用的正确版本,这很重要,就像任何方法调用都很重要一样。如果你有这样的东西怎么办:
public SomeClass(int a, int b)...
如果是的话
new SomeClass(1, 2);
编译器怎么知道您实际上是想让a
为2,而b
为1?唯一一种情况是,如果所有参数的类型都不同,编译器可能会破译您的意图——在大多数情况下,编译器不可能知道您的意图
即使所有类型都不同,编译器如何知道您有意以不同的顺序传递它们?据它所知,它正在把你从一个错误中解救出来
请注意,某些其他语言,如C#,确实允许您以与指定不同的顺序传递参数,但您必须标记这些参数,以便编译器能够知道哪个是哪个。尝试一下,看看会发生什么。是的,这很重要。在上面的示例中,第一个参数必须是整数,第二个必须是字符串。构造函数是根据。TL;是的,必须有相同的数字,而且它们的顺序必须相同。假设你有一个有理数的构造函数,它取分子和分母的值?你不认为顺序很重要吗?