如果一个类有多个构造函数,哪个被调用?

时间:2015-03-08 18:54:16

标签: constructor

就像标题所说,如果我有多个构造函数(这不是一个好习惯),它们中的哪一个被调用?

2 个答案:

答案 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分别在strx中传递。

答案 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中。 ;)

相关问题