当前位置: 代码迷 >> java >> Java 构造函数重载
  详细解决方案

Java 构造函数重载

热度:50   发布时间:2023-08-02 11:22:30.0

我是 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) {
        ...
    }
}

你可以用不同的方式构造你的对象。 你可以自己看一个例子: 有很多构造函数。



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




但这行不通:

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)
{
}

依此类推..这是不同的论点,其余保持不变!

  相关解决方案