Java构造函数重载
我是Java的新手,我无法理解构造函数问题,我已经看了很多教程,但我仍然很难理解为什么我们使用构造函数,无论如何,我的具体问题是:
如果我错了,请纠正我,如果我想在我的类中添加多个构造函数,我将编写第一个,第二个将是int
类型(在括号内)。
-
是因为构造函数必须与类同名,我们需要区分它们吗?
-
如果我想添加第三个构造函数怎么办? 它也可以是
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) { }
等等……这是有所作为的论点,其余部分保持不变!