Java构造函数重载
我是Java新手,在理解构造函数问题上遇到了困难, 我看过很多教程,但仍然很难理解为什么要使用构造函数,无论如何,我的具体问题是: 如果我错了,请纠正我,如果我想在我的类中添加多个构造函数,我将编写第一个构造函数,第二个构造函数将是Java构造函数重载,java,constructor,overloading,Java,Constructor,Overloading,我是Java新手,在理解构造函数问题上遇到了困难, 我看过很多教程,但仍然很难理解为什么要使用构造函数,无论如何,我的具体问题是: 如果我错了,请纠正我,如果我想在我的类中添加多个构造函数,我将编写第一个构造函数,第二个构造函数将是inttype(在括号内) 是因为构造函数必须与类同名,我们需要区分它们吗 如果我想添加第三个构造函数呢?它也可以是int类型吗 是,构造函数的名称与类的名称相同 只要构造函数有不同的签名,就可以有任意多个签名。签名是一个构造函数与另一个构造函数的区别 public
int
type(在括号内)
int
类型吗是,构造函数的名称与
类的名称相同
只要构造函数有不同的签名,就可以有任意多个签名。签名是一个构造函数与另一个构造函数的区别
public MyClass()
{
}
public MyClass(int a)
{
}
public MyClass(int a, int b)
{
}
public MyClass(String a)
{
}
public MyClass(int a, String b)
{
}
这些都是不同的,因为他们有不同的签名
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
{
}
实际上,如果你想有10000个构造函数,你可以只要签名是不同的
public class People {
public People(String name, int age) {
...
}
public People(String name) {
...
}
}
您可以用不同的方式构造对象。
你可以自己看一个例子:wich有很多构造函数
是的,所有构造函数都有相同的类名称
但这是行不通的:
public class People {
public People(String name, int age) {
...
}
public People(String name, int numberOfLegs) {
...
}
}
由于您有两个具有相同签名的构造函数添加到@brso05答案中
这也是一种方式:
public MyClass( int a)
{
}
public MyClass( int a, int b)
{
}
public MyClass( int a, String b)
{
}
诸如此类..正是论点起了作用,其余的都一样 构造函数的目的是包含对对象进行序列化的代码。通常,初始化是使用构造函数参数完成的。根据上下文的需要,可以使用不同参数列表的不同构造函数。进行构造函数链接是一种很好的做法,即从其他人那里调用基构造函数。如果你不理解为什么要使用构造函数,你可能想先阅读面向对象编程。正确的做法是,从第一个开始,然后编写第二个,但其他一切都是胡说八道。没有要求第二个构造函数必须是int
类型,因此,有两个以上的构造函数是没有问题的。一些阅读:签名可以是同一类型?@Yuvi1我不知道你的意思?我知道你写的第三个构造函数带有字符串签名,它可以像第二个一样使用int签名?是的,2个构造函数只能有一个名为a
的参数,只要类型不同,这会使签名不同,这样就可以了。这就是你要问的吗?第一个构造函数是MyClass(int a),第二个是MyClass(int b)可以吗?不要告诉IDE可能会显示什么,你可以直接指出javac似乎对500000个构造函数很满意,但对500000到18844174个构造函数有点不满意,虽然那可能是我的机器的内存限制你真的试过了吗?