Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/374.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
为什么这个Java代码中有多个构造函数?_Java_Object_Constructor - Fatal编程技术网

为什么这个Java代码中有多个构造函数?

为什么这个Java代码中有多个构造函数?,java,object,constructor,Java,Object,Constructor,在我的Java类Java I中听讲座时,有人给了我一张要打印的参考表。这不是家庭作业,只是为了理解对象、类和构造函数而查看的内容。我的问题是,是否需要多个构造函数?第一个只声明所有变量,第二个初始化它们。这不能在一个构造函数中完成吗?以下是构造函数的代码。非常欢迎您编写一个示例,或者帮助我理解我所看到的内容。我对建设者很陌生 public class Puppy { private String name; // puppy's name private Strin

在我的Java类Java I中听讲座时,有人给了我一张要打印的参考表。这不是家庭作业,只是为了理解对象、类和构造函数而查看的内容。我的问题是,是否需要多个构造函数?第一个只声明所有变量,第二个初始化它们。这不能在一个构造函数中完成吗?以下是构造函数的代码。非常欢迎您编写一个示例,或者帮助我理解我所看到的内容。我对建设者很陌生

public class Puppy 
{ 
    private String name;      // puppy's name
    private String breed;     // breed of dog
    private int age;          // chronological age of dog
    private String vet;       // name of vet

    public Puppy() 
    {
        name = " ";
        breed = " ";
        age = 0;
        vet = " ";
    } // end of Puppy constructor

    // method initializing data fields to specific values
    public Puppy(String n, String b, int a, String v) 
    {
        name = n;
        breed = b;
        age = a;
        vet = v;
    } // end of Puppy constructor 

这两个构造函数将为此类用户提供两种创建对象的方法:

使用第一个构造函数的参数 用第二个承包商的论点
本质上,如果用户不提供任何值,第一个构造函数将生效并为实例变量提供默认值。

两个构造函数将为此类用户提供两种创建对象的方法:

使用第一个构造函数的参数 用第二个承包商的论点 本质上,如果用户不提供任何值,则第一个构造函数将生效并为实例变量提供默认值。

没有一个构造函数声明对象的字段变量。它们在这里声明:

private String name;      // puppy's name
private String breed;     // breed of dog
private int age;          // chronological age of dog
private String vet;       // name of vet
第一个构造函数只创建某种类型的空Puppy对象,而第二个构造函数提供了创建特定Puppy对象的能力

此外,还可以在声明部分中指定初始化值,因此您不再需要:

没有一个构造函数声明对象的字段变量。它们在这里声明:

private String name;      // puppy's name
private String breed;     // breed of dog
private int age;          // chronological age of dog
private String vet;       // name of vet
第一个构造函数只创建某种类型的空Puppy对象,而第二个构造函数提供了创建特定Puppy对象的能力

此外,还可以在声明部分中指定初始化值,因此您不再需要:

重载方法最流行的例子之一是System.out.println,它允许您放置字符串、基元类型甚至表达式等参数

您这样做是因为您需要一个方法来处理不同类型的参数,并在不崩溃的情况下对此进行处理

在本例中,您正在重载构造函数,因此,当您为先前在类文件中定义的类创建实例时,传递的参数将是有效的

我可以添加一个构造函数吗?它是在创建对象后不调用方法而向对象传递值的集合

Person alicia = new Person("Alicia Roberts"); //the variable holding the full name is set.

Person alicia = new Person(); //create the object
alicia.setFullName("Alicia Roberts"); // pass a value by a method
重载方法最流行的例子之一是System.out.println,它允许您放置字符串、基元类型甚至表达式等参数

您这样做是因为您需要一个方法来处理不同类型的参数,并在不崩溃的情况下对此进行处理

在本例中,您正在重载构造函数,因此,当您为先前在类文件中定义的类创建实例时,传递的参数将是有效的

我可以添加一个构造函数吗?它是在创建对象后不调用方法而向对象传递值的集合

Person alicia = new Person("Alicia Roberts"); //the variable holding the full name is set.

Person alicia = new Person(); //create the object
alicia.setFullName("Alicia Roberts"); // pass a value by a method

不,通常不需要有超过1个构造函数。 拥有多个1的原因是为了方便可能使用您的代码的人

通常,提供多个构造函数的原因是在调用构造函数时可能知道不同或不同数量的信息。 所以提供一个构造函数

木偶串n,串b,int a,串v

比让用户执行以下操作更方便:

Puppy p = new Puppy();
p.setName("Rover");
p.setAge(12);
p.setBreed("Mutt");
p.setVet("Dr. Dolittle");

不,通常不需要有超过1个构造函数。 拥有多个1的原因是为了方便可能使用您的代码的人

通常,提供多个构造函数的原因是在调用构造函数时可能知道不同或不同数量的信息。 所以提供一个构造函数

木偶串n,串b,int a,串v

比让用户执行以下操作更方便:

Puppy p = new Puppy();
p.setName("Rover");
p.setAge(12);
p.setBreed("Mutt");
p.setVet("Dr. Dolittle");

引用类型(如字符串)的默认值为null。这与空字符串不同。第一个构造函数确保name和bride等内容具有空字符串值,而不是null值。如果这是必要的,通常在定义字段时以内联方式完成。首先,将使用构造函数中使用的硬编码值初始化对象,使用第二个构造函数,您可以传入自己的值,并创建具有该值的对象。似乎不需要第一个构造函数,因为变量可以在声明时初始化为默认值。也就是说,有些框架和工具需要显式声明一个空构造函数。如果使用这样的工具/框架,它可以解释它。另外,第一个构造函数的代码也可以是,0;。这样你就可以想到第二种解释
作为“基础”。如果用户没有提供任何值,您只需创建一个“默认”Puppy对象。构造函数参数的命名肯定会更清晰。使用name等参数名,然后像这样分配字段。name=name提高了可理解性。string等引用类型的默认值为null。这与空字符串不同。第一个构造函数确保name和bride等内容具有空字符串值,而不是null值。如果这是必要的,通常在定义字段时以内联方式完成。首先,将使用构造函数中使用的硬编码值初始化对象,使用第二个构造函数,您可以传入自己的值,并创建具有该值的对象。似乎不需要第一个构造函数,因为变量可以在声明时初始化为默认值。也就是说,有些框架和工具需要显式声明一个空构造函数。如果使用这样的工具/框架,它可以解释它。另外,第一个构造函数的代码也可以是,0;。这样,您可以将第二个构造函数视为“基础”。如果用户没有提供任何值,您只需创建一个“默认”Puppy对象。构造函数参数的命名肯定会更清晰。使用像name这样的参数名,然后像这样分配字段。name=name提高了可理解性。