就像标题所说,如果我有多个构造函数(这不是一个好习惯),它们中的哪一个被调用?
答案 0 :(得分:0)
你在哪里听到这是不好的做法?
您只能有一个具有特定参数列表顺序的构造函数,因此被调用的构造函数是您传入的参数指定的构造函数。
public class Test {
public Test() {...}
public Test(String str, int x) {...}
}
稍后说你打电话:
Test test = new Test("Hello", 46);
被调用的构造函数是这样的:
public Test(String str, int x) {...}
字符串"Hello"
和数字46
分别在str
和x
中传递。
答案 1 :(得分:0)
用什么编程语言? 一切都取决于语言。
对于Delphi,例如,必须有多个构造函数是有效的。即使具有相同的名称和不同的参数(数量和类型)。在这种情况下,构建器应该过载。
constructor TMyClass.Create overrride;
begin
// Code here
end;
constructor TMyClass.Create(Value: integer); override;
begin
// Code here
end;
constructor TMyClass.Create(Value1: integer; Value2: string); override;
begin
// Code here
end;
编译器自己知道哪一个将要运行。 实际上,这样做甚至是合法的:
constructor TMyClass.Create(Value3: double);
begin
Create(Random (9), 'Hello');
end;
即彼此调用。
编译器的神奇之处在于决定何时以及必须执行什么。而且我已经明白这是在所有LOO中。 ;)