Java构造函数重载

我是Java的新手,我无法理解构造函数问题,我已经看了很多教程,但我仍然很难理解为什么我们使用构造函数,无论如何,我的具体问题是:

如果我错了,请纠正我,如果我想在我的类中添加多个构造函数,我将编写第一个,第二个将是int类型(在括号内)。

  1. 是因为构造函数必须与类同名,我们需要区分它们吗?

  2. 如果我想添加第三个构造函数怎么办? 它也可以是int类型吗?

a)是因为构造函数必须与类同名,我们需要区分它们吗?

是构造函数始终是没有任何返回类型的类的名称,并且为了区分它们,您可以使用不同的参数。

b)如果我想添加第三个构造函数怎么办? 它也可以是int类型?

是的,你可以添加任何号码。 重载的构造函数,但所有都应该是不同的。 和/或参数类型。

喜欢 :-

 public User() // default constructor { } public User(int age) // overloaded constructor with int { } public User(String name) // // overloaded constructor with String { } public User(String name, int age) // // overloaded constructor with String and int { } 

是的,构造函数与Class具有相同的名称。

只要构造函数具有不同的签名,您就可以拥有任意数量的签名。 签名是一个构造函数与另一个构造函数的区别……

 public MyClass() { } public MyClass(int a) { } public MyClass(int a, int b) { } public MyClass(String a) { } public MyClass(int a, String b) { } 

这些都是不同的,因为它们有不同的签名。

实际上,如果你想拥有10000个构造函数,那么只要签名就是不同的。

 public class People { public People(String name, int age) { ... } public People(String name) { ... } } 

您可以以不同的方式构造对象。 你可以自己看一个例子: java String类,它有很多构造函数。

是的,所有构造函数都与他的类具有相同的名称。

但这不起作用:

 public class People { public People(String name, int age) { ... } public People(String name, int numberOfLegs) { ... } } 

由于您有两个具有相同签名的构造函数

构造函数purpouse包含用于初始化对象的代码。 通常,使用构造函数参数完成初始化。 根据您的上下文的需要,您可以使用具有不同参数列表的不同构造函数。 做构造函数链接是一个很好的实践,即从其他人调用基础构造函数。

添加到@ brso05答案,

这也是其中一种方式:

 public MyClass( int a) { } public MyClass( int a, int b) { } public MyClass( int a, String b) { } 

等等……这是有所作为的论点,其余部分保持不变!