问题描述
我是 Java 新手,无法理解构造函数问题,我看过很多教程,但仍然难以理解我们为什么使用构造函数,无论如何,我的具体问题是:
如果我错了,请纠正我,如果我想在我的类中添加多个构造函数,我将编写第一个,第二个将是int
类型(在括号内)。
是不是因为构造函数必须与类同名,我们需要区分它们?
如果我想添加第三个构造函数怎么办? 它也可以是
int
类型吗?
1楼
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
{
}
2楼
是的,构造函数与Class
同名。
只要构造函数具有不同的签名,您就可以拥有任意数量的签名。 签名是区分一个构造函数与另一个构造函数的地方...
public MyClass()
{
}
public MyClass(int a)
{
}
public MyClass(int a, int b)
{
}
public MyClass(String a)
{
}
public MyClass(int a, String b)
{
}
这些都是不同的,因为它们有不同的签名。
3楼
实际上,如果您想拥有 10000 个构造函数,只要签名不同就可以。
public class People {
public People(String name, int age) {
...
}
public People(String name) {
...
}
}
你可以用不同的方式构造你的对象。 你可以自己看一个例子: 有很多构造函数。
是的,所有构造函数都与他的类同名。
但这行不通:
public class People {
public People(String name, int age) {
...
}
public People(String name, int numberOfLegs) {
...
}
}
由于您有两个具有相同签名的构造函数
4楼
构造函数的目的是包含初始化对象的代码。 通常,初始化是使用构造函数参数完成的。 根据上下文的需要,您可以使用具有不同参数列表的不同构造函数。 进行构造函数链接是一种很好的做法,即从其他人调用基构造函数。
5楼
添加到@brso05 答案中,
这也是其中一种方式:
public MyClass( int a)
{
}
public MyClass( int a, int b)
{
}
public MyClass( int a, String b)
{
}
依此类推..这是不同的论点,其余保持不变!