Java构造函数重载

Java构造函数重载,java,constructor,overloading,Java,Constructor,Overloading,我是Java新手,在理解构造函数问题上遇到了困难, 我看过很多教程,但仍然很难理解为什么要使用构造函数,无论如何,我的具体问题是: 如果我错了,请纠正我,如果我想在我的类中添加多个构造函数,我将编写第一个构造函数,第二个构造函数将是inttype(在括号内) 是因为构造函数必须与类同名,我们需要区分它们吗 如果我想添加第三个构造函数呢?它也可以是int类型吗 是,构造函数的名称与类的名称相同 只要构造函数有不同的签名,就可以有任意多个签名。签名是一个构造函数与另一个构造函数的区别 public

我是Java新手,在理解构造函数问题上遇到了困难, 我看过很多教程,但仍然很难理解为什么要使用构造函数,无论如何,我的具体问题是:

如果我错了,请纠正我,如果我想在我的类中添加多个构造函数,我将编写第一个构造函数,第二个构造函数将是
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个构造函数有点不满意,虽然那可能是我的机器的内存限制你真的试过了吗?